• Matéria: Informática
  • Autor: feitosaaline537
  • Perguntado 5 anos atrás

Escreva um programa em Python que pede ao utilizador que lhe forneça um valor emEuros e troca esse valor no menor número de moedas possível (2EUR, 1EUR, 50c., 10c., 5c. e 1c.).

Respostas

respondido por: GeBEfte
2

Há diferentes soluções possíveis para chegar no objetivo proposto, o programa abaixo é apenas uma dessas formas podendo ser melhorado, por exemplo, com adição de uma validação de dados, tratamento de exceções etc.

Lembrando que, além das moedas listadas no enunciado, temos também moedas de 20c e 2c.

Não pretendo me alongar com explicações, deixo aberto os comentários para dúvidas/esclarecimentos, no entanto cabe ressaltar uma particularidade desse código.

Note que utilizamos uma função moeda_int() para converter o valor lido para inteiro (int), ou seja, não lemos o valor como float. Este passo é essencial para evitar problemas/limitações da representação de pontos flutuantes (float)

Obs.: Os pontos que precedem as linhas de programação não fazem parte do programa, foram colocadas para garantir a indentação do código (também anexado).

def moeda_int():

.....valor = str(input('Valor em Euros: '))

.....if not valor.isnumeric():

..........dec_point = valor.find('.')

..........cents = int(valor[dec_point+1:])

..........euros = int(valor[:dec_point])*100

.....else:

..........cents = 0

..........euros = int(valor)*100

.....return euros+cents

valor_inteiro = moeda_int()

moedas = (200 , 100 , 50 , 20 , 10 , 5 , 2 , 1)

valor_conv = list()

for i in moedas:

.....qnt_moeda = valor_inteiro // i

.....valor_conv.append(qnt_moeda)

.....valor_inteiro -= qnt_moeda*i

print(f'''

Moeda(s) recebida(s):  

2EUR: {valor_conv[0]}

1EUR: {valor_conv[1]}

50c : {valor_conv[2]}

20c : {valor_conv[3]}

10c : {valor_conv[4]}

5c  : {valor_conv[5]}

2c  : {valor_conv[6]}

1c  : {valor_conv[7]}  

''')

\Huge{\begin{array}{c}\Delta \tt{\!\!\!\!\!\!\,\,o}\!\!\!\!\!\!\!\!\:\,\perp\end{array}}Qualquer~d\acute{u}vida,~deixe~ um~coment\acute{a}rio

Anexos:
Perguntas similares