Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Não consegui implementar a busca do nome na lista!

Sempre que seleciono a opção 5 recebo o retorno: Traceback (most recent call last): File "C:\alura\python\app.py", line 52, in menu() File "C:\alura\python\app.py", line 47, in menu procurar() TypeError: procurar() takes exactly 1 argument (0 given)

# -*- coding: UTF-8 -*-
def cadastrar(nomes):
    print 'digite o nome:'
    nome = raw_input()
    nomes.append(nome)

def procurar(nomes):
    if(nome_procurado in nomes):
        print '%s está na lista.'
    else:
        print'%s não está na lista'

def listar(nomes):
    for nome in nomes:
        print nome


def menu():
    nomes = []
    escolha = ''
    while(escolha != '0'):
        print 'Digite 1 para cadastrar, 2 para listar nomes, 3 para remover da lista,4 para alterar um nome, 0 para encerrar'
        escolha = raw_input()

        if(escolha == '1'):
            cadastrar(nomes)

        if(escolha == '2'):
            listar(nomes)

        if(escolha == '3'):
            print 'Digite o nome para retira-lo'
            nome = raw_input()
            nomes.remove(nome)

        if(escolha == '4'):
            print 'Qual nome você quer alterar?'
            nome = raw_input()
            print'Coloque o nome novo:'
            nome_novo = raw_input()
            pos = nome.index(nome)
            nomes[pos] = nome_novo

        if(escolha == '5'):
            print 'Qual nome você procura?'
            nome_procurado = raw_input()
            procurar()




menu()
7 respostas

Na sua função: def procurar(nomes): Recebe o argumento (nomes) e quando você está usando ela no if(escolha==5): não está passando nada como parametro, ta usando procurar() sem nada dentro

def procurar(nome_procurado, nomes):
    if(nome_procurado in nomes):
        print '%s está na lista.'
    else:
        print'%s não está na lista'
...
...
 if(escolha == '5'):
            print 'Qual nome você procura?'
            nome_procurado = raw_input()
            procurar(nome_procurado, nomes)

Passando o nome_procurado e a lista como parametro, deve funcionar

Oi Gabriel! É o que os colegas já falaram. Conseguiu?

Prezado,

Vc tem que fazer algumas mudança na saída da função procurar()

Coloquei como resolvido porém hoje, ao implementar a dica do Davi obtive o retorno....

Traceback (most recent call last): File "C:\alura\python\app.py", line 52, in menu() File "C:\alura\python\app.py", line 47, in menu procurar(nome_procurado, nomes) File "C:\alura\python\app.py", line 8, in procurar if(nome_procurado in nomes): TypeError: 'in ' requires string as left operand, not list

O código está....

# -*- coding: UTF-8 -*-
def cadastrar(nomes):
    print 'digite o nome:'
    nome = raw_input()
    nomes.append(nome)

def procurar(nomes, nome_procurado):
    if(nome_procurado in nomes):
        print '%s está na lista.'
    else:
        print'%s não está na lista'

def listar(nomes):
    for nome in nomes:
        print nome


def menu():
    nomes = []
    escolha = ''
    while(escolha != '0'):
        print 'Digite 1 para cadastrar, 2 para listar nomes, 3 para remover da lista,4 para alterar um nome, 0 para encerrar'
        escolha = raw_input()

        if(escolha == '1'):
            cadastrar(nomes)

        if(escolha == '2'):
            listar(nomes)

        if(escolha == '3'):
            print 'Digite o nome para retira-lo'
            nome = raw_input()
            nomes.remove(nome)

        if(escolha == '4'):
            print 'Qual nome você quer alterar?'
            nome = raw_input()
            print'Coloque o nome novo:'
            nome_novo = raw_input()
            pos = nome.index(nome)
            nomes[pos] = nome_novo

        if(escolha == '5'):
            print 'Qual nome você procura?'
            nome_procurado = raw_input()
            procurar(nome_procurado, nomes)




menu()
solução!

Oi Gabriel! Você inverteu a posição dos parâmetros passados para a função procurar ao chama-la. O correto é passar primeiro a lista e depois o nome.

Boa noite Flavio! Funcionou, obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software