Contar Cédulas de Dinheiro em um Caixa Eletrônico em Python

"Faça um Programa para um caixa eletrônico. O programa deverá perguntar ao usuário a valor do saque e depois informar quantas notas de cada valor serão fornecidas. As notas disponíveis serão as de 1, 5, 10, 50 e 100 reais. O valor mínimo é de 10 reais e o máximo de 600 reais. O programa não deve se preocupar com a quantidade de notas existentes na máquina.

    Exemplo 1: Para sacar a quantia de 256 reais, o programa fornece duas notas de 100, uma nota de 50, uma nota de 5 e uma nota de 1;
    Exemplo 2: Para sacar a quantia de 399 reais, o programa fornece três notas de 100, uma nota de 50, quatro notas de 10, uma nota de 5 e quatro notas de 1.
"

Contar Notas e Cédulas em Python

Há várias maneiras diferentes de darmos 256 reais, ou qualquer outro valor.
Poderíamos, por exemplo dar 256 cédulas de 1 real (hoje em dia só moeda, mas antes tinha cédula de 1 real sim).

Mas seria altamente inconveniente sair de um caixa eletrônico com centenas de cédulas. Ou seja, queremos usar o menor número de cédulas possíveis!

Isso é feito da seguinte maneira: dando cédulas de valor alto.

  • Notas de R$ 100,00

O primeiro passo é tentar empurrar o maior número de notas de 100 reais possível. No caso de 256 reais, só podemos dar 2 notas de 100 reais, pois se dermos mais, passa de 256.

Como fazemos isso?
Dividindo o valor que o usuário pediu pra sacar por 100.
Vamos colocar em 'numero', o valor que ele solicitou que fosse sacado.

Se fizermos:
cem = numero / 100

Teremos que cem=2.56
Não seria legal se a gente tirasse esse ponto fluante e essa parte decimal?
É fácil fazer isso, só usar a função int(), que vai transformar esse número em inteiro (ele pega a parte inteira e descarta o resto).

Assim, o número de cédulas de 100 reais é:
cem = int( numero/10 )

Se antes queríamos sacar 256 reais, agora queremos somente 56, pois já demos os 200 reais.

Vamos transformar nosso valor de 256 pra 56 da seguinte maneira:
numero = numero - (cem*100)
(numero = 256 - 2*100 = 56)

Concorda?

  • Notas de R$ 50,00

Agora vamos tentar usar o máximo possível de notas de 50 reais.
Para isso, basta dividir nosso número por 50 e pegar a parte inteira, como fizemos com as cédulas de 100:

cinquenta =int( numero/50 )

No nosso exemplo de 256 reais: cinquenta = int(56/50) = int(1.12) = 1

Agora que já usamos as de 50 reais, vamos tirar ela de nosso número:
numero = numero - (cinquenta*50)
(numero = 56 - 1.50)

  • Notas de R$ 10,00

A lógica é a mesma:

dez = int( numero/10 )
numero = numero - (dez*10)

  • Notas de R$ 5,00

cinco = int(numero/5)
numero = numero - (cinco*5)

E o que sobrou, é nota de um real:
um = numero

Nosso código Python fica?

    numero = int(input('Valor para sacar [10-600]: '))

    cem = int(numero / 100)
    numero = numero - (cem*100)
    
    cinquenta = int(numero/50)
    numero = numero - (cinquenta*50)

    dez = int(numero/10)
    numero = numero - (dez*10)

    cinco = int(numero/5)
    numero = numero - (cinco*5)

    um = numero
    
    print('Notas R$100,00 = ',cem)
    print('Notas R$ 50,00 = ',cinquenta)
    print('Notas R$ 10,00 = ',dez)
    print('Notas R$  5,00 = ',cinco)
    print('Notas R$  1,00 = ',um)


Nosso código também poderia ser:

    numero = int(input('Valor para sacar [10-600]: '))

    cem = int(numero / 100)
    numero = numero % 100
    
    cinquenta = int(numero/50)
    numero = numero % 50

    dez = int(numero/10)
    numero = numero % 10

    cinco = int(numero/5)
    numero = numero % 5

    um = numero
    
    print('Notas R$100,00 = ',cem)
    print('Notas R$ 50,00 = ',cinquenta)
    print('Notas R$ 10,00 = ',dez)
    print('Notas R$  5,00 = ',cinco)
    print('Notas R$  1,00 = ',um)

Consegue entender o motivo?

Nenhum comentário:

Postar um comentário