Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida

Informações após aniversário: Rafaela, 22 anos, Aeromoça Carlos, 46 anos, Engenheiro De Software Luisa, 35 anos,

A minha dúvida é como que eu faço para a vírgula não aparecer terminal no caso da Luisa? O campo 'Profissão está vazio'!

class Pessoa:
    nome = ''
    idade = ''
    profissao = ''

    pessoas = []

    def __init__(self, nome, idade, profissao):
        self._nome = nome.title()
        self._idade = int(idade)
        self._profissao = profissao.title()
        Pessoa.pessoas.append(self)

    def __str__(self):    
        return f'{self._nome}, {self._idade} anos, {self._profissao}'
        
    
    def aniversario(self):
        self._idade += 1
        return self._idade
    
    @property
    def saudacao(self):
        if self._profissao:
            return f'Olá me chamo {self._nome}! Trabalho como {self._profissao}'
        else:
            return f'Ola me chamo {self._nome}'    

# Criando 3 instâncias da classe Pessoa
pessoa1 = Pessoa(nome='rafaela', idade= 21, profissao='aeromoça')
pessoa2 = Pessoa(nome='carlos', idade= 45, profissao='engenheiro de software')
pessoa3 = Pessoa(nome= 'luisa', idade= 34, profissao='')

# Imprimindo informações iniciais
print('Informações iniciais:')
print(pessoa1)
print(pessoa2)
print(pessoa3)
print()

# Utilizando o método de instância aniversario para aumentar a idade de uma pessoa
pessoa1.aniversario()
pessoa2.aniversario()
pessoa3.aniversario()

# Imprimindo informações após aniversário
print('Informações após aniversário:')
print(pessoa1)
print(pessoa2)
print(pessoa3)
print()

# Utilizando o método de classe saudacao para exibir mensagens personalizadas
print(pessoa1.saudacao)
print(pessoa2.saudacao)
print(pessoa3.saudacao)

        

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Bom dia Douglas! Tudo bem com você?

Para alcançar o resultado desejado, basta adicionarmos uma condicional ao método __str__ da classe Pessoa. Esta condicional verificará se o atributo profissao do objeto foi definido. Com isso, conseguiremos personalizar a saída do método de acordo com a presença ou ausência desse atributo. Deixo abaixo um exemplo de implementação do código com a lógica aplicada:

    def __str__(self):
        if self._profissao:
            return f'{self._nome}, {self._idade} anos, {self._profissao}'
        else:
            return f'{self._nome}, {self._idade} anos'

Dessa forma, quando o objeto Pessoa tiver um valor para profissao, o método __str__ exibirá uma mensagem completa, incluindo a profissão. Caso contrário, a mensagem exibida será mais simples, sem o detalhe da profissão, consequentemente sem apresentar a vírgula após a idade.

Resultado:

Imagem apresentando o resultado da execução do código do estudante após a implementação da sugestão

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado