1
resposta

[Sugestão] Faça como eu fiz: organizando uma lista de convidados

"""
Escreva um programa que receba os nomes dos convidados até que o usuário digite 'sair', e ao final mostre a lista de convidados sem repetições.
"""


def validar_input(msg: str) -> str:
    dado = input(msg).strip().lower()
    if dado == 'sair':
        return dado
    if len(dado) < 3:
        raise ValueError('O nome precisa ter no mínimo 3 caracteres.')
    return dado


def criar_lista_convidados() -> set:
    lista_convidados = set()
    print("--- Sistema de Convidados (digite 'sair' para finalizar) ---")

    while True:

        try:
            dado = validar_input(
                'Digite o nome do convidado para adicionar a lista: ')
            if dado == 'sair':
                break
            if dado in lista_convidados:
                print(
                    f'"{dado.title()}" já foi adicionado(a) a lista de convidados.')
                continue
        except ValueError as e:
            print(f'Ocorreu um erro! Erro: {e}')
            continue
        except Exception as e:
            print(f'Ocorreu um erro inesperado! Erro: {e}')
            continue

        lista_convidados.add(dado)
        print(f'"{dado.title()}" adicionado a lista de convidados.')

    return lista_convidados


convidados = criar_lista_convidados()

if convidados:
    convidados_ordenados = sorted(list(convidados))

    if len(convidados_ordenados) > 1:
        inicio = ", ".join(nome.title() for nome in convidados_ordenados[:-1])
        ultimo = convidados_ordenados[-1].title()
        resultado = f"{inicio} e {ultimo}"
    else:
        resultado = convidados_ordenados[0].title()

    print(f'\nConvidados confirmados ({len(convidados)}): {resultado}')
else:
    print('\nA lista está vazia.')
1 resposta

Oi, José Rafael! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei bastante da forma como você separou a lógica em funções, principalmente validar_input(), deixando o código mais organizado e reutilizável. O uso de set para evitar repetições foi uma escolha muito adequada para a proposta da atividade, e o cuidado com tratamento de exceções mostra atenção a possíveis erros de entrada.

Uma dica interessante para o futuro é usar o método setdefault() em dicionários quando quiser contar quantas vezes um nome foi digitado, por exemplo. Veja este exemplo:


nomes = {}
nome = input("Digite um nome: ").strip().lower()

nomes.setdefault(nome, 0)
nomes[nome] += 1

print(nomes)

Nesse código, setdefault() cria a chave com valor 0 caso ela ainda não exista, facilitando contagens e organização de dados.

Alura

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