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