Bom dia galera, não consigo usar a função lista.sort(), eu tenho que receber números e adiciona-los em uma lista, remover os repetidos e ordenar, meu código está assim:
def remove_repetidos():
    
 l = []
 n = -1
 while n != 0:
     n = int(input('Digite um numero inteiro: '))
     
     if n != 0:
      l.append(n)
     if n == 0:
      return list(set(l))
“A complexidade de depurar é o dobro da de escrever o código. Portanto, se você escrever código o mais inteligente possível, por definição você não será esperto o suficiente para depurá-lo.”
         
        
          
        
           
           
           
         
         
            
            
          
       
      
        
        
          Defina “não consigo usar”. O que você tentou fazer? O que esperava acontecer? O que de fato aconteceu?
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Outra coisa a se atentar, faz sentido uma função chamada remove_repetidos criar uma lista vazia, pedir para digitar números, adicioná-los na lista para depois removê-los?
Sua função está com responsabilidades que não são dela, melhor passar a lista como parâmetro…
def remove_repetidos(lista):
    return list(set(lista))
E toda aquela lógica estar fora da função…
Tenha em mente também que o método sort não retorna uma lista ordenada, apenas altera o objeto dela ou seja isso é inválido
listaOrdenada = lista.sort()
print(listaOrdenada)
Isso é o correto
lista.sort()
print(lista)
Se quer uma nova lista já ordenada, pode usar a função sorted
listaOrdenada = sorted(lista)
print(listaOrdenada)
         
        
        
           
           
           2 curtidas
         
         
            
            
          
       
      
        
        
          Ficou assim:
def remove_repetidos():
    lista = ordena_lista()
    lista_final = list(set(lista))
    return lista_final
    
    
def ordena_lista():
    l = cria_lista()
    lista_ordenada = sorted(l)
    return lista_ordenada
    
       
def cria_lista():
    lista = []
    n = True
    while n:
        n = int(input('Digite um numero: '))
        lista.append(n)
        
    if n == 0:
        n = False
        return lista
Como que eu faço para iniciar sem ter que chamar uma função ? Por que no corretor automático do meu curso da erro se tiver que chamar alguma função para o programa iniciar.
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Está confuso seu código, lembra sobre o que falei sobre responsabilidades?
Pois então, sua função remove também ordena, sua função ordena também cria… quanto a inicializar sem função não entendi muito bem, mas o conceito de função é ser chamada e executar algo (pondento ou não retornar algo)…
Veja se isso melhora a visibilidade e dá sentido ao código…
def remove_repetidos(lista):
    return list(set(lista))
def ordena_lista(lista):
    return sorted(lista)
def cria_lista():
    return []
def preenche_lista(lista):
    while True:
        n = int(input('Digite um numero (0 para sair): '))
        lista.append(n)
        if n == 0:
            break # para o while
# modulo principal (chama e manipula as funções)
if __name__ == '__main__':
    nova_lista = cria_lista()
    preenche_lista(nova_lista) # não precisa retornar
    print("lista criada e preenchida", nova_lista)
    lista_sem_repetidos = remove_repetidos(nova_lista)
    print("lista sem repetidos", lista_sem_repetidos)
    lista_ordenada = ordena_lista(lista_sem_repetidos)
    print("lista ordenada", lista_ordenada)
         
        
        
           
           
           1 curtida
         
         
            
            
          
       
      
        
        
          Descobri que estava quebrando a cabeça por nada, mas pelo menos aprendi aqui a organizar melhor as funções, o real problema você tinha resolvido la encima quando disse:
O que eu não podia fazer era usar um input ou uma def sem parâmetro, o corretor já ia gerar uma lista para usar na def, então ficou simples assim os exercícios:
#Ex.1
def remove_repetidos(lista):
    
    lista_final = list(set(lista))
    lista_final.sort()
    return lista_final
#Ex.2    
def soma_elementos(lista):
    lista.append(0)
    lista_somada = sum(lista)
    return lista_somada
#Ex.3
 def maior_elemento(lista):
    
 lista = max(lista)
 return lista
         
        
        
           
           
           2 curtidas
         
         
            
            
          
       
      
        
        
          Rodrigo, como vc testou essas funções? Poderia postar aqui?