1
resposta

[Sugestão] Código para solicitar nomes até usuário digitar sair. Nomes que nao se repetem

import unicodedata
def normalizar(nome):
nome = unicodedata.normalize('NFKD', nome)
return ''.join(ch for ch in nome if not unicodedata.combining(ch)).lower()
def so_letras(valor):
return all(
unicodedata.category(ch).startswith('L')
or unicodedata.category(ch) == 'Zs'
or ch in "'- "
for ch in valor
)
def vazio(valor):
return valor is None or valor.strip() == ''
def nome_completo(valor):
return len(valor.split()) > 1
def sair(valor):
return valor.upper() == 'SAIR'
def menu():
print('\nDigite uma opção:')
print('1 - Adicionar nomes')
print('2 - Ver lista de nomes')
print('3 - Encerrar programa')
def adicionar_convidados(nomes):
while True:
nome = input('Digite o nome do convidado (ou SAIR para encerrar): ').strip()
if sair(nome):
print('Encerrando registro de nomes.')
break
if vazio(nome):
print('Campo obrigatório.')
continue
if not nome_completo(nome):
print('Digite o nome completo.')
continue
if not so_letras(nome):
print('Digite apenas letras.')
continue
if nome in nomes:
print('Este nome já foi adicionado.')
else:
nomes.add(nome)
print('Nome adicionado com sucesso.')
def ver_lista(nomes):
if not nomes:
print('\nLista vazia.')
return
print('\nLista de convidados:')
for nome in nomes:
print(f'- {nome}')
def escolha():
while True:
try:
return int(input('Digite uma opção: '))
except ValueError:
print('Digite apenas números.')
def main():
nomes = set()
while True:
menu()
opcao = escolha()
if opcao == 1:
adicionar_convidados(nomes)
elif opcao == 2:
ver_lista(nomes)
elif opcao == 3:
print('Programa encerrado.')
break
else:
print('Opção inválida.')
if name == 'main':
main()

1 resposta

Olá! Como vai?

Parabéns pela resolução das atividades!

E para compartilhar códigos de maneira ainda mais organizada aqui no fórum, você pode utilizar a opção abaixo:

Opção inserir bloco de código, da caixa de perguntas do fórum da alura

Após clicar, irá aparecer uma estrutura da seguinte maneira:

Opção de bloco de código sendo illustrada
O resultado será o seguinte:

Copie o seu código aqui

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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