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()