0
respostas

[Projeto] Contador de cédulas únicas

import os

NOTAS = [
    { "valor":100, "quantidade":0 },
    { "valor":50,  "quantidade":0 },
    { "valor":20,  "quantidade":0 },
    { "valor":10,  "quantidade":0 },
    { "valor":5,   "quantidade":0 },
    { "valor":2,   "quantidade":0 }
]

def sacar_dinheiro(valor):
    """Saca dinheiro priorizando notas mais altas"""
    valor_sacado = 0
    valor_inicial = valor
    for nota in NOTAS:
        nota["quantidade"] = valor // nota["valor"]
        valor_sacado += nota["quantidade"] * nota["valor"]
        valor = valor % nota["valor"]
        if valor == 0: break

    if valor_sacado != valor_inicial:
        tratar_erro("Erro: Não é possível retornar esse valor.")
        return []
    
    return NOTAS

def mostrar_notas(notas):
    if len(notas) > 0:
        print("\nCédulas entregues:")
        for nota in notas:
            if nota['quantidade'] > 0:
                print(f"{nota['quantidade']} de R$ {nota['valor']}")


def tratar_erro(mensagem):
    input(f"{mensagem} Aperte qualquer tecla para continuar ")
    main()

def executar_saque():
    try:
        valor = int(input("Digite o valor do saque: "))
    except:
        tratar_erro("O valor informado deve ser inteiro.")
    else:
        notas = sacar_dinheiro(valor)
        mostrar_notas(notas)

def main():
    os.system("cls")
    executar_saque()

if __name__ == "__main__":
    main()