Olá! Tudo bem?
A solução proposta para o exercício "Contador de cédulas únicas" tem um problema quando são solicitados valores terminados em 6 e 8.
Isso ocorre porque os restos dessas divisões acabam sendo 1 e 3 quando são usadas notas de 5.
Acredito que essa seja uma possível forma de resolver esse problema:
def valor():
try:
solicitacao = int(input("Digite o calor do saque (múltiplo de 2): "))
if solicitacao % 2 != 0:
print("Erro: o valor precisa ser múltiplo de 2")
return valor()
elif solicitacao < 0:
print("Erro: o valor precisa ser positivo")
return valor()
return solicitacao
except:
print("O Valor precisa ser inteiro")
return valor()
def caixa(valor):
cedulas = [100,50,20,10,5,2]
print("Cédulas entregues:")
for cedula in cedulas:
quantidade = valor // cedula
if quantidade > 0:
if valor % cedula == 1 or valor % cedula == 3:
continue
print(f"{quantidade} cédulas de R${cedula}")
valor = valor % cedula
etapa1 = valor()
caixa(etapa1)
Nessa sugestão, quando o programa testa que o resto da divisão inteira entre o valor e a cédula é 1 ou 3, ele ignora o uso das notas de 5 e passa para as notas de 2.
Assim, o caixa eletrônico pode entregar o dinheiro solicitado pelo usuário sem problemas!