1
resposta

[Projeto] teste

def voluntarios():
    pessoas = []
    while True:
        nome = input('Digite o nome do voluntário (ou "sair" para encerrar): ')
        if nome.lower() == 'sair':
            break
        idade = input('Digite a idade do voluntário: ')
        pessoas.append({'nome': nome, 'idade': idade})
    return pessoas
if __name__ == "__main__":
    voluntarios_cadastrados = voluntarios()
    print("Voluntários cadastrados:")
    for pessoa in voluntarios_cadastrados:
        print(f"Nome: {pessoa['nome']}, Idade: {pessoa['idade']}")

voluntarios()
1 resposta

Oii, João.

Ficou excelente a sua iniciativa de ir além do que o exercício pedia. O enunciado sugeria apenas uma lista simples de nomes, mas você implementou uma lista de dicionários para armazenar também a idade. Isso mostra que você já tá confortável em manipular estruturas de dados mais complexas.

Tenho apenas um ponto de atenção para o seu código rodar perfeitamente.

É sobre a execução. Note que você colocou uma chamada voluntarios() na última linha do arquivo, fora do bloco if __name__ == "__main__":. Como você já chama a função dentro desse bloco principal, essa linha final fará com que o programa execute duas vezes seguidas (uma pelo bloco principal e outra pela chamada solta). O ideal é removê-la.

O código ajustado ficaria assim:

def voluntarios():
    pessoas = []
    while True:
        nome = input('Digite o nome do voluntário (ou "sair" para encerrar): ')
        if nome.lower() == 'sair':
            break
        idade = input('Digite a idade do voluntário: ')
        pessoas.append({'nome': nome, 'idade': idade})
    return pessoas

if __name__ == "__main__":
    voluntarios_cadastrados = voluntarios()
    print("Voluntários cadastrados:")
    for pessoa in voluntarios_cadastrados:
        print(f"Nome: {pessoa['nome']}, Idade: {pessoa['idade']}")

Continue explorando, sua lógica tá muito boa.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!