Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Resolução - Reorganizando uma lista de convidados

class ListaDeConvidados:
    def __init__(self):
        self.convidados = []

    def adicionar_convidado(self, nome, posicao=None):
        if posicao is not None and 0 <= posicao < len(self.convidados):
            self.convidados.insert(posicao, nome)
        else:
            self.convidados.append(nome)

    def mostrar_lista(self):
        print('Lista de Convidados:')
        for index, convidado in enumerate(self.convidados):
            print(f'{index + 1}. {convidado}')

# Exemplo de uso
if __name__ == '__main__':
    lista = ListaDeConvidados()
    
    # Convidados iniciais
    convidados_iniciais = ['Alice', 'Bob', 'Charlie']
    
    # Adicionando convidados iniciais à lista
    for convidado in convidados_iniciais:
        lista.adicionar_convidado(convidado)
    
    # Mostrando a lista inicial
    lista.mostrar_lista()
    
    # Adicionando um novo convidado em uma posição específica
    nome_novo_convidado = input('\nDigite o nome do novo convidado: ')
    posicao_novo_convidado = int(input('Digite a posição onde o convidado será inserido: '))
    lista.adicionar_convidado(nome_novo_convidado, posicao_novo_convidado)
    
    # Mostrando a lista atualizada
    print('\nLista Atualizada:')
    lista.mostrar_lista()
1 resposta

Olá, Thaís! Como vai?

Gostei da forma como você criou a classe ListaDeConvidados para organizar as ações da lista, separando bem o que é responsabilidade de adicionar_convidado() e de mostrar_lista(). O uso de enumerate() também ficou muito bom, porque facilita exibir a posição de cada pessoa convidada de forma mais clara.

Uma dica interessante para o futuro é ajustar a posição digitada pela pessoa usuária, já que ela provavelmente vai informar a posição começando em 1, enquanto o índice da lista começa em 0.

posicao_novo_convidado = int(input('Digite a posicao onde o convidado sera inserido: '))
lista.adicionar_convidado(nome_novo_convidado, posicao_novo_convidado - 1)

Esse código transforma a posição informada em um índice válido para a lista, deixando a inserção mais intuitiva. Você pretende testar também o que acontece quando a pessoa informa uma posição maior que o tamanho da lista?

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