Dentro do meu algoritmo, fiz um método substituir_valor() para alterar os valores das chaves (cidade, profissão, etc).
Apesar de não ter conseguido, depois de uma sugestão do Chat GPT consegui fazer funcionar. Mas eu não consigo entender o que estava errado da maneira que fiz a primeira já que eu acredito apenas ter separado as condições pessoa['nome'] == nome e chave in pessoa ou chave not in pessoa.
Alguém consegue me explicar?
Meu algoritmo
def substituir_valor():
nome = input('Qual o nome da pessoa que você quer trocar o valor?')
chave = input('Qual tipo de chave deseja mudar?')
for pessoa in lista_de_pessoas:
while True:
if pessoa['nome'] == nome and chave in pessoa:
valor = input('Qual o valor que você deseja mudar? ')
pessoa[chave] = valor
break
elif pessoa['nome'] == nome and chave not in pessoa:
pergunta = input(f'{nome} não possui essa chave. Deseja criar?' ).lower()
if pergunta == 'sim':
pessoa[chave] = ''
break
elif pergunta == 'não':
break
else:
print('Responder "sim" ou "não" ')
return
else:
print('Nome ou chave inexistente(s)')
return
substituir_valor()
código sugerido pelo Chat GPT
def substituir_valor():
nome = input('Qual o nome da pessoa que você quer trocar o valor? ')
chave = input('Qual tipo de chave deseja mudar? ')
for pessoa in lista_de_pessoas:
if pessoa['nome'] == nome and chave in pessoa:
valor = input(f'Qual o novo valor para {chave}? ')
pessoa[chave] = valor
print('Valor alterado com sucesso!')
return
elif pessoa['nome'] == nome and chave in pessoa:
pergunta = input(f'{nome} não possui a chave {chave}. Deseja criar? ').lower()
if pergunta == 'sim':
novo_valor = input('Digite o valor para essa chave: ')
pessoa[chave] = novo_valor
print('Chave criada com sucesso!')
return
elif pergunta == 'não':
print('Operação cancelada.')
return
else:
print('Por favor, responda "sim" ou "não".')
return
else:
print('Pessoa não encontrada na lista.')