1
resposta

[Projeto] Contador de cédulas únicas

Resolvi o saque para números impares. Só não dá para sacar R$1 e R$3

import os

def tratar_entrada(valor_entrada):
    class ValorMenorError(Exception):
        pass
    for i in range(0,len(valor_entrada)-1):
        valor_entrada = valor_entrada.replace(',','.')
    try:
        valor = int(valor_entrada)
        if valor < 2 or valor == 3:
            raise ValorMenorError ()
    except ValorMenorError:
        os.system('cls')
        print('O saque deve ser maior ou igual a 2 e diferente de 3')
        return False
    except ValueError:
        try:
            float(valor_entrada)
            os.system('cls')
            print('Centavos não estão disponíveis para saque.')
            return False
        except ValueError:
            os.system('cls')
            print('Digite somente números.')
            return False
    return True

def saque():
    cedulas = [100,50,20,10,5,2]
    while True:
        entrada = input('Digite um valor para saque: R$')
        if not tratar_entrada(entrada):
            continue
        
        entrada = int(entrada)
        quantidades = {}
        if entrada % 2 != 0:
            entrada = entrada - 5
            quantidades[5] = 1
        for i in cedulas:
            if i % 2 == 0:
                quantidade = entrada // i
                entrada = entrada % i
                if quantidade != 0:
                    quantidades[i] = quantidade
        
        for cedula in cedulas:
            if cedula in quantidades: print(f'{quantidades[cedula]} de R${cedula}')
        break
saque()
1 resposta

Oi, Lucas!

Sua solução está bem interessante e mostra que você pensou na limitação das cédulas. A ideia de tratar números ímpares usando a cédula de 5 antes das pares foi uma boa sacada.

A validação também está bem completa, cobrindo vários cenários de erro. Só tem alguns pontos que podem ser melhorados.

A solução está funcionando bem e mostra um bom raciocínio lógico.

Bons estudos!

Sucesso

Imagem da comunidade