Skip navigation

Nos últimos meses, tenho sentido vontade de me aventurar pelo mundo da programação e do desenvolvimento web, sendo assim, comecei a estudar lógica de programação e Python, uma linguagem de fácil aprendizado e com muitos recursos.

Hoje eu resolvi praticar um pouco e escrevi um programa para calcular troco e mostrar como entregá-lo com o menor número de notas possíveis.

Veja como ficou o código:

#!/bin/python
# -*- coding: iso-8859-15 -*-
#contador de troco

preco = int(raw_input(‘Digite o valor da compra: ‘))
dinheiro = int(raw_input(‘Digite a quantia de dinheiro entregue: ‘))
print

troco = dinheiro – preco

if troco > 0:

print ‘Valor do troco: R$ %s.’ % troco
print

for p in 100, 50, 20, 10, 5, 2, 1:

if troco >= p:

n = troco/p
r = troco – p*n
print ‘: %s nota(s) de R$ %s.’ % (n, p)
troco = r

else:

print ‘O dinheiro entregue é menor do que o valor da compra.’

Código comentado:

preco = int(raw_input(‘Digite o valor da compra: ‘))

O comanto raw_input(‘ ‘) recebe os dados digitados pelo usuário. Como estes dados são considerados como string, ou seja, apenas uma seqüência de caracteres, é necessário transformá-los em número para que, assim, podermos efetuar operações matemáticas com esses dados. Preferi usar o comando int(), o qual converte os dados em números inteiros. Por fim, o número é armazenado na variável preco.

O mesmo se dá na linha seguinte para a variável dinheiro. O print da linha seguinte apenas gera uma linha em branco durante a execução do programa. Já na linha:

troco = dinheiro – preco

calculamos o valor do troco.

if troco > 0:

Para que o troco exista, ele tem que ser maior do que zero (óbvio!).

Se o troco for menor que zero, o programa pula para a linha:

else:
print ‘O dinheiro entregue é menor do que o valor da compra.’

a qual avisa o usuário que o valor do dinheiro é menor do que o das despesas.

Se o troco for maior do que zero, o programa vai mostrar o valor do troco:

print ‘Valor do troco: R$ %s.’ % troco

No bloco seguinte, eu usei o seguinte raciocínio: o cliente só vai receber uma nota de 100 se o troco for maior que 100 e assim sucessivamente com todas as notas (100, 50, 20, 10, 5, 2 e 1). O comando for vai fazer a comparação com o valor de cada nota.

if troco >= p:

Se o troco é maior ou igual a 100, então o número de notas de 100 que o cliente vai receber é o valor do troco dividido por 100 (n = troco/p). Nesse caso, n sempre vai ser um número inteiro em razão do uso do comando int() no começo do programa. A operação envolvendo dois número inteiros em Python, sempre vai resultar num número inteiro. Então, se o valor do troco for R$ 107, n será igual a 1.

Daí eu uso r = troco – p*n pra calcular o resto da operação. O resto (r) é igual ao troco menos o valor da nota múltiplicado pela quantidade destas. Eu não precisei usar parênteses no p*n devido a uma propriedade do Python de efetuar a multiplicação antes da subtração.

print ‘: %s nota(s) de R$ %s.’ % (n, p)

Mostra a quantidade de notas de 100 que o cliente tem direito. Por fim, temos a linha:

troco = r

que substitui o valor da variável troco pelo valor de r. A partir daí, o programa vai repetir essas operações para todos os valores presentes na linha for p in 100, 50, 20, 10, 5, 2, 1:

É isso depois vou tentar fazer o programa calcular os centavos do troco também. Qualquer erro ou sugestão de melhorias no algoritmo, deixem comentário.

Obs.: Pra executar o programa, basta salvá-lo como arquivo de texto e digitar no terminal: python arquivo.py

Manuais que eu utilizei: Aprenda a Programar do Luciano Ramalho e Tutorial Python.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: