Oii, Matheus!
Obrigada por compartilhar seu código com a comunidade Alura.
Seu código tá muito bem estruturado, com funções bem nomeadas e docstrings claras. Gostei especialmente da forma como você validou a entrada de nomes e posições, isso evita muitos erros comuns e torna a interação mais fluida.
Uma dica interessante para o futuro é permitir que o usuário veja a lista atual antes de inserir um novo nome. Isso pode ajudar a decidir melhor a posição. Algo assim:
def exibir_subtitulo(texto):
linha = (len(texto) + 4)
print(f"{texto}")
print()
def exibir_lista(convidados):
print("\nLista atual de convidados:")
for i, nome in enumerate(convidados, start=1):
print(f"{i}. {nome}")
print()
def obter_convidado():
"""
Obtem um novo nome para adicionar à lista de convidados.
"""
while True:
novo_convidado = input('Digite o nome do novo convidado ou "sair" para encerrar o programa: ').strip()
if novo_convidado.lower() == "sair":
return None
if not novo_convidado:
print('Erro! Nome vazio.')
continue
elif not novo_convidado.isalpha():
print('Erro! Digite apenas nomes.')
continue
return novo_convidado.title()
def obter_posicao(tamanho_lista):
"""
Solicita ao usuário a posição para inserir o novo convidado na lista.
"""
while True:
try:
posicao_convidado = int(input(f'Insira a posição na qual deseja inserir o convidado (1 a {tamanho_lista + 1}): '))
except ValueError:
print('Insira apenas um número válido!')
continue
if 1 <= posicao_convidado <= tamanho_lista + 1:
print('Convidado adicionado à lista.')
return posicao_convidado - 1
else:
print(f'ERRO! Insira uma posição entre 1 e {tamanho_lista + 1}.')
def adicionar_convidado(convidados):
"""
Adiciona um novo convidado em uma posição específica da lista.
"""
exibir_lista(convidados)
convidado = obter_convidado()
if convidado is None:
return False
posicao = obter_posicao(len(convidados))
convidados.insert(posicao, convidado)
return True
def main():
convidados = ['Ana', 'Pedro', 'Carlos']
exibir_subtitulo('\n - LISTA DE CONVIDADOS - \n')
while True:
if not adicionar_convidado(convidados):
print(f'\nOperação finalizada! Nova lista: {convidados}')
break
else:
print(f'Lista Atualizada: {convidados}')
if __name__ == '__main__':
main()
Usei enumerate
pra mostrar os nomes com a posição correspondente, começando em 1.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!