Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Alterar nome

Acabei dividindo a função em três. Você considera isso prático ou eu o tornei muito difícil?

def cadastrar(nomes):
    print ('Insira o seu nome:')
    nome = raw_input()
    nomes.append(nome)

def menu():
    nomes = []
    escolha =' '
    while( escolha != '0'):
        print ('Aperte 1 para cadastrar, 2 para listar, 3 para remover, 4 para alterar nome e  0 para terminar')
        escolha = raw_input()

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

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

        if (escolha =='3'):
            remover(nomes)

        if (escolha == '4'):
            alterar_nome(nomes)

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

def remover (nomes):
    nome_removido = raw_input('Digite o nome a ser removido:')
    nomes.remove(nome_removido)

def encontrar_um_nome (nomes):
    nome_buscado = raw_input('Digite o nome a ser alterado:')
    if (nome_buscado in nomes):
        print 'Nome encontrado'

    else :
        print 'Nome nao encontrado'

    return nome_buscado

def pegar_posicao (nomes, nome_encontrado):
    index_do_nome = nomes.index(nome_encontrado)
    return index_do_nome


def alterar_nome (nomes):
    nome_encontrado = encontrar_um_nome(nomes) # tem como retorno o nome_buscado
    index_do_nome_encontrado = pegar_posicao(nomes, nome_encontrado) # foi adicionado o nome_encontrado como argumento. 
    novo_nome = raw_input('Digite o novo nome:')
    nomes [index_do_nome_encontrado] = novo_nome

menu()
1 resposta
solução!

Oi Gilmar, tudo bem?

Dividir o código em funções é uma boa prática, pois, é sugerido que respeitemos o princípio da responsabilidade única, ou seja, cada função tem uma única responsabilidade e você mandou bem em fazer esta divisão. Fica até mais simples a leitura do código. Parabéns.

Qualquer dúvida, fique a vontade para postar aqui no fórum. Espero ter ajudado. Abraços e bons estudos!