Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Projeto final da atividade

Como não consegui fazer a atividade, como forma de tentar entender e aprimorar, coloquei um menu para exibir as informações, ainda pretendo melhorar ele, eu estava horas tentando acrescentar uma forma de o usuário informar os dados e exibir depois, mas infelizmente ainda não consegui, segue abaixo como ficou:

import os

class Pessoa:
    def __init__(self, nome='', idade=0, profissao=''):
        self.nome = nome
        self.idade = idade
        self.profissao = profissao

    def __str__(self):
        return f'{self.nome} tem a idade de {self.idade} e tem a profissão de {self.profissao}'

    def exibir_nome_do_programa():
        os.system('cls')
        print("""
█▀▄ ▄▀█ █▀▄ █▀█ █▀   █▀▄ █▀▀   █▀▀ █░█ █▄░█ █▀▀ █ █▀█ █▄░█ ▄▀█ █▀█ █ █▀█ █▀
█▄▀ █▀█ █▄▀ █▄█ ▄█   █▄▀ ██▄   █▀░ █▄█ █░▀█ █▄▄ █ █▄█ █░▀█ █▀█ █▀▄ █ █▄█ ▄█
""")

#------------

    def info_inicial():
        print("\nInformações Iniciais:")
        print(pessoa1)
        print(pessoa2)
        print(pessoa3)
        Pessoa.voltar_ao_menu_principal()
        print()

    def aniver():   
        pessoa1.aniversario()
        pessoa3.aniversario()

        print("Informações após aniversário:")
        print(pessoa1)
        print(pessoa3)
        Pessoa.voltar_ao_menu_principal()
        print()
        
    def job():
        print("Informações de trabalho:")
        print(pessoa1.saudacao)
        print(pessoa2.saudacao)
        print(pessoa3.saudacao)
        Pessoa.voltar_ao_menu_principal()   

 #------------

    def voltar_ao_menu_principal():
        input('\nDigite uma tecla para voltar ao menu principal.\n')
        Pessoa.exibir_nome_do_programa()
        Pessoa.exibir_opcoes()
        Pessoa.escolher_opcao()

    def finalizar_app():
        print('Finalizando o app')

    def opcao_invalida(cls):
        print('Opção Inválida!\n')
        Pessoa.voltar_ao_menu_principal()

 #------------

    def exibir_opcoes():
        print('1. Informações Iniciais')
        print('2. Informações após aniversário')
        print('3. Informações de trabalho')
        print('4. Sair\n')

    def escolher_opcao():
        try:
            opcao_escolhida = int(input('Escolha uma das opções: '))

            if opcao_escolhida == 1:
                Pessoa.info_inicial()
            elif opcao_escolhida == 2:
                Pessoa.aniver()
            elif opcao_escolhida == 3:
                Pessoa.job()
            elif opcao_escolhida == 4:
                Pessoa.finalizar_app()
            else:
                Pessoa.opcao_invalida()
        except:
            Pessoa.opcao_invalida()

 #------------

    @property
    def saudacao(self):
        if self.profissao:
            return f'Olá, sou {self.nome}! Trabalho como {self.profissao}.'
        else:
            return f'Olá, sou {self.nome}!'
    
    def aniversario(self):
        self.idade += 1

#------------

pessoa1 = Pessoa(nome='Alice', idade=25, profissao='Engenheira')
pessoa2 = Pessoa(nome='Luiza', idade=30, profissao='Desenvolvedor')
pessoa3 = Pessoa(nome='Jaque', idade=22)

#------------

Pessoa.exibir_nome_do_programa()
Pessoa.exibir_opcoes()
Pessoa.escolher_opcao()
2 respostas
solução!

Olá, Luis. Tudo bem?

Obrigado por compartilhar seu código aqui com a gente.

Muito bom como você estruturou o menu e adicionou a funcionalidade de exibir as opções. Isso facilita bastante para o usuário. Como curiosidade, você poderia simplificar a exibição das opções utilizando uma lista de dicionários e iterando sobre ela, a mesma sugestão que deixei no outro tópico. Veja este exemplo:

opcoes = [
    {"numero": 1, "descricao": "Informações Iniciais"},
    {"numero": 2, "descricao": "Informações após aniversário"},
    {"numero": 3, "descricao": "Informações de trabalho"},
    {"numero": 4, "descricao": "Sair"}
]

for opcao in opcoes:
    print(f'{opcao["numero"]}. {opcao["descricao"]}')

Isso deixa o código mais enxuto e fácil de manter.

Conte com o apoio do Fórum. Abraços e bons estudos!

Obrigado pela dica, depois de um tempo consegui entender como aplicar ao código, ficou assim:

import os

class Pessoa:
    opcoes = [
    {"numero": 1, "descricao": "Informações Iniciais"},
    {"numero": 2, "descricao": "Informações após aniversário"},
    {"numero": 3, "descricao": "Informações de trabalho"},
    {"numero": 4, "descricao": "Sair"}
]

    def __init__(self, nome='', idade=0, profissao=''):
        self.nome = nome
        self.idade = idade
        self.profissao = profissao

    def __str__(self):
        return f'{self.nome} tem a idade de {self.idade} e tem a profissão de {self.profissao}'

    def exibir_nome_do_programa():
        os.system('cls')
        print("""
█▀▄ ▄▀█ █▀▄ █▀█ █▀   █▀▄ █▀▀   █▀▀ █░█ █▄░█ █▀▀ █ █▀█ █▄░█ ▄▀█ █▀█ █ █▀█ █▀
█▄▀ █▀█ █▄▀ █▄█ ▄█   █▄▀ ██▄   █▀░ █▄█ █░▀█ █▄▄ █ █▄█ █░▀█ █▀█ █▀▄ █ █▄█ ▄█
""")

#------------

    def info_inicial():
        print("\nInformações Iniciais:")
        print(pessoa1)
        print(pessoa2)
        print(pessoa3)
        Pessoa.voltar_ao_menu_principal()
        print()

    def aniver():   
        pessoa1.aniversario()
        pessoa3.aniversario()

        print("Informações após aniversário:")
        print(pessoa1)
        print(pessoa3)
        Pessoa.voltar_ao_menu_principal()
        print()
        
    def job():
        print("Informações de trabalho:")
        print(pessoa1.saudacao)
        print(pessoa2.saudacao)
        print(pessoa3.saudacao)
        Pessoa.voltar_ao_menu_principal()   

 #------------

    def voltar_ao_menu_principal():
        input('\nDigite uma tecla para voltar ao menu principal.\n')
        Pessoa.exibir_nome_do_programa()
        Pessoa.exibir_opcoes()
        Pessoa.escolher_opcao()

    def finalizar_app():
        print('Finalizando o app')

    def opcao_invalida(cls):
        print('Opção Inválida!\n')
        Pessoa.voltar_ao_menu_principal()

 #------------

    def exibir_opcoes():
        for opcao in Pessoa.opcoes:
            print(f'{opcao["numero"]}. {opcao["descricao"]}')

    def escolher_opcao():

        try:
            opcao_escolhida = int(input('Escolha uma das opções: '))

            if opcao_escolhida == 1:
                Pessoa.info_inicial()
            elif opcao_escolhida == 2:
                Pessoa.aniver()
            elif opcao_escolhida == 3:
                Pessoa.job()
            elif opcao_escolhida == 4:
                Pessoa.finalizar_app()
            else:
                Pessoa.opcao_invalida()
        except:
            Pessoa.opcao_invalida()

 #------------

    @property
    def saudacao(self):
        if self.profissao:
            return f'Olá, sou {self.nome}! Trabalho como {self.profissao}.'
        else:
            return f'Olá, sou {self.nome}!'
    
    def aniversario(self):
        self.idade += 1

#------------

pessoa1 = Pessoa(nome='Alice', idade=25, profissao='Engenheira')
pessoa2 = Pessoa(nome='Luiza', idade=30, profissao='Desenvolvedor')
pessoa3 = Pessoa(nome='Jaque', idade=22)

#------------

Pessoa.exibir_nome_do_programa()
Pessoa.exibir_opcoes()
Pessoa.escolher_opcao()