Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

[Sugestão] Correção para Bug

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!