Não entendi muito o laço for do python. Ele inicializa com um item da lista e a condição é a própria lista?
def listar(nomes):
print 'Listando nomes:'
for nome in nomes:
print nome
No entanto, ao usar tentar usar esse código para alterar um item da lista não funcionou.
Função alterar (sei que a construção está errada conforme a resposta do exercício):
def alterar(nomes):
print 'Qual nome você gostaria de alterar?'
nome = raw_input()
for nome in nomes:
if(nome==nomes[nome]):
print 'Insira o nome nome:'
novo_nome = raw_input()
nomes[nome] = novo_nome
O erro apresentado:
Digite: 1 para cadastrar
2 para listar
3 para remover
4 para alterar
0 para terminar
4
Qual nome você gostaria de alterar?
maria
Traceback (most recent call last):
File "app.py", line 44, in <module>
menu()
File "app.py", line 41, in menu
alterar(nomes)
File "app.py", line 22, in alterar
if(nome==nomes[nome]):
TypeError: list indices must be integers, not str
O mais interessante é que ele diz que o índice da lista deve ser um inteiro e não uma string, mas como funcionou na meu for da função listar?
Outra coisa: no if (conforme abaixo) o 'in' funciona como um '==', e o if além de fazer a verificação ele já percorre a lista?
def alterar(nomes):
print 'Qual nome vc gostaria de alterar?'
nome_a_alterar = raw_input()
if(nome_a_alterar in nomes):
posicao = nomes.index(nome_a_alterar)
print 'Digite novo nome:'
nome_novo = raw_input()
nomes[posicao] = nome_novo