2
respostas

Solução do exercício proposto

Eu fiz da seguinte forma. Queria que enquanto o valor para saque ou deposito fosse inválido, o programa continuasse pedindo por um novo valor. Em questão de legibilidade, como eu poderia melhorar?

 def saque(self, valor):

        saldo_insuficiente = valor > self.__saldo

        while saldo_insuficiente:

            novo_valor = int(input(f"Saldo Insuficiente. Insira um valor válido."))
            if novo_valor <= self.__saldo:
                saldo_insuficiente = False
            valor = novo_valor

        self.__saldo -= valor

 def depositar(self, valor):

        deposito_nulo = valor <= 0

        while deposito_nulo:

            novo_valor = int(input(f"Valor para deposito insuficiente. Insira um valor válido."))
            if novo_valor > 0:
                deposito_nulo = False
            valor = novo_valor

        self.__saldo += valor
2 respostas

Fiz as Seguintes Alterações no código:

def saque(self, valor):

        valor_a_sacar = self.__saldo_insuficiente(valor)
        self.__saldo -= valor_a_sacar

def depositar(self, valor):

        valor_a_depositar = self.__deposito_nulo(valor)
        self.__saldo += valor_a_depositar

def __saldo_insuficiente(self, valor):

        saldo_insuficiente = valor > self.__saldo

        while saldo_insuficiente:
                novo_valor = int(input(f"Saldo Insuficiente. Insira um valor válido."))

                if novo_valor <= self.__saldo:
                    saldo_insuficiente = False
                valor = novo_valor

        return valor

def __deposito_nulo(self, valor):

       deposito_nulo = valor <= 0

        while deposito_nulo:
                novo_valor = int(input(f"Valor para deposito insuficiente. Insira um valor válido."))
                if novo_valor > 0:
                    deposito_nulo = False
                valor = novo_valor

        return valor

Dessa forma, refatorei o código pra que os métodos saque e depositar fiquem mais clean.

Tambem implementei uma condição para não permitir a transfência entre a mesma conta.

Código final:

class Conta:

    def __init__(self, numero, titular, saldo, limite):

        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

    def extrato(self):

        print(f"Seu Saldo atual é: {self.__saldo}")

    def saque(self, valor):

        valor_a_sacar = self.__saldo_insuficiente(valor)
        self.__saldo -= valor_a_sacar

    def depositar(self, valor):

        valor_a_depositar = self.__deposito_nulo(valor)
        self.__saldo += valor_a_depositar

    def transferir(self, valor, conta_destino):

        if self == conta_destino:
            print("Não é possivel transferir um valor para a mesma conta")
        else:
            self.saque(valor)
            conta_destino.depositar(valor)

    def __saldo_insuficiente(self, valor):
        saldo_insuficiente = valor > self.__saldo

        while saldo_insuficiente:

            novo_valor = int(input(f"Saldo Insuficiente. Insira um valor válido."))
            if novo_valor <= self.__saldo:
                saldo_insuficiente = False
            valor = novo_valor

        return valor

    def __deposito_nulo(self, valor):
        deposito_nulo = valor <= 0

        while deposito_nulo:

            novo_valor = int(input(f"Quantia Negativa. Insira um valor válido."))
            if novo_valor > 0:
                deposito_nulo = False
            valor = novo_valor

        return valor

    @property
    def saldo(self):
        return self.__saldo

    @property
    def titular(self):
        return self.__titular

    @property
    def limite(self):
        return self.__limite

    @titular.setter
    def titular(self, titular):
        self.__titular = titular

    @limite.setter
    def limite(self, limite):
        self.__limite = limite

Oii Yan, como você está?

Peço desculpas pela demora em obter um retorno.

Meus parabéns pela implementação do código, fico feliz que tenha compartilhado com a comunidade do fórum Alura. A dedicação em se desafiar a aprender cada vez mais é muito importante para fixarmos o que estamos aprendendo e alavancar ainda mais nossa carreira.

Gostaria de aproveitar a oportunidade e realizar o convite para que você mergulhe ainda mais no aprendizado através do curso de boas práticas de programação e estilização de código usando como referência o guia de estilo da PEP8 (Python Enhancement Proposal).

Lembre-se que pode contar com o fórum sempre, seja para compartilhar o seu desenvolvimento ou para tirar suas dúvidas.

Qualquer dúvida fico à disposição.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software