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

[Dúvida] 07 Hora da prática: criando classes, construtores e métodos. Não foi possível usar o .ljust() para variáveis float nem bool. Existe alguma alternativa?

#Atividade 1 e 4. 
class ContaBancaria:
    contas=[]
    def __init__(self, _titular="", _saldo=0, _ativo=False) -> None:
        self._titular = _titular.title()
        self._saldo = _saldo
        self._ativo = False
        ContaBancaria.contas.append(self)

    #Atividade 2 e 4.
    def __str__(self):
        return f"{self._titular}, seu saldo é R$ {self._saldo}."

    #Atividade 3 e 4.
    @classmethod
    def listar_contas(cls):
        print(f"{"Titular".ljust(20)} | {"Saldo".ljust(10)} | {"Situação"}")
        for conta in cls.contas:
            print(f"{conta._titular.ljust(20)} | {conta._saldo} | {conta._ativo}")
    
    def alterar_situacao_conta(self):
        self._ativo = not self._ativo
        return self._ativo
    
    @property
    def ativo(self):
        return "ativa" if self._ativo else "inativa"
        
    

#Atividade 2.
conta1=ContaBancaria("wiliam Nunes", 300.4, False)
conta2=ContaBancaria("roberta carvalho", 3004.5, False)
print(conta1.__str__())
print(conta2)
#Atividade 3.
conta3=ContaBancaria("Vitoria Regina", 20.00, False)
conta3.alterar_situacao_conta()
ContaBancaria.listar_contas()
#Atividade 5.
conta4=ContaBancaria("joão Batista", 300.7, False)
print(conta4._titular)
#Atividade 6.

class ClienteBanco:
    clientes=[]
    def __init__(self, _nome="", _endereco="",_nagencia="", _nconta="", _cpf=0) -> None:
        self._nome = _nome.title()
        self._endereco = _endereco.title()
        self._nagencia =_nagencia
        self._nconta = _nconta 
        self._cpf = _cpf
        ClienteBanco.clientes.append(self)

    @classmethod
    def listar_clientes(cls):
        print(f"{"Nome".ljust(20)} | {"Endereço".ljust(50)} | {"Agência".ljust(19)} | {"Conta".ljust(20)} | {"CPF"}")
        for cliente in cls.clientes:
            print(f"{cliente._nome.ljust(20)} | {cliente._endereco.ljust(50)} |{ cliente._nagencia.ljust(20)} | {cliente._nconta.ljust(20)} | {cliente._cpf}")
#Atividade 7.
cliente1=ClienteBanco("João Batista", "Rua Monte Branco, 3001, Cidade Nova", "4339-4", "229902-0", 3892892890)
cliente1=ClienteBanco("Vitoria Regina", "Rua Monte Verde, 2001, Cidade Velha", "4339-4", "229903-0", 5692899890)
cliente1=ClienteBanco("Roberta Carvalho", "Rua Monte Azul, 1001, Cidade Alta", "4339-4", "229904-0", 4592882890)
ClienteBanco.listar_clientes()
2 respostas
solução!

Bom dia, Estudante! Tudo bem com você?

O método ljust é exclusivo para objetos do tipo string em Python, assim, para fazer o seu uso devemos converter os valores dos atributos da classe para o tipo string quando formos imprimi-los. Basta usarmos a função str() como apresentada abaixo:

str(conta._saldo).ljust(10)

Essa conversão deve ser feita para os atributos _saldo, _ativo e _cpf, por eles são respectivamente do tipo float, bool e int. Seu código deve ficar da seguinte forma para que seja impresso corretamente as informações:

#Atividade 3 e 4.
@classmethod
def listar_contas(cls):
    print(f"{"Titular".ljust(20)} | {"Saldo".ljust(10)} | {"Situação".ljust(20)}")
    for conta in cls.contas:
        print(f"{conta._titular.ljust(20)} | {str(conta._saldo).ljust(10)} | {str(conta._ativo).ljust(20)}")

Resultado

Imagem apresentando uma tabela no console, após executar o código acima

Após realizar as modificações acima, salve o arquivo e execute-o novamente.

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 ✓. Bons Estudos!

Obrigado pela explicação!!