Programação em Python 3: Lissandra comprou vários quadros novos para seu apartamento e agora precisa de pregos para pendurá-los. Pesquisando, ela descobriu que uma caixa com 12 pregos custa R$ 7,89. Escreva um programa que receba a quantidade de pregos necessários para cada quadro, até que seja informada uma quantidade ímpar, e exiba o valor total que será gasto e a quantidade de pregos que vão sobrar. Formato de entrada: Vários números inteiros até que seja informado um ímpar Formato de saída: Na primeira linha, um valor real com duas casas decimais. Na segunda linha, um valor inteiro
Soluções para a tarefa
O programa abaixo não possui uma validação de dados ou tratamento de erros/exceções, assim espera-se do usuário a correta utilização.
Alguns exemplos de "problemas" que podem acontecer são abordados nos comentários abaixo do código.
total_pregos=0
while True:
.....pregos=int(input('Quantidade de pregos: '))
.....if pregos%2==0:
..........total_pregos+=pregos
.....else:
..........break
caixas=total_pregos//12+1
print(f'\nSerá gasto um total de {caixas*7.89:.2f}')
print(f'Sobram {12*caixas-total_pregos} pregos.')
Comentários:
--> A variavel "total_pregos" será utilizada como acumulador para o numero de pregos.
--> Utilizamos um laço while "infinito" para ler as quantidades de pregos utilizadas para cada quadro.
--> Antes de passarmos a quantidade de pregos informada pelo usuário para o acumulador, guardamos na variável "pregos". Através de uma estrutura condicional (if/else), verificamos se o numero de pregos informado é par ou impar com auxilio do operador % (resto da divisão).
Caso seja par, adicionamos a quantidade em total_pregos, caso negativo (valor impar), saímos do laço (break).
--> Calculamos o numero de caixas necessárias por uma divisão inteira (//) entre total_pregos e 12, a quantidade de pregos por caixa. Somamos 1 unidade, pois a divisão inteira irá ignorar a parte fracionaria da divisão.
Obs.: Poderíamos utilizar a função ceil() como alternativa.
--> Por fim, mostramos ao usuário o valor a ser pago, ou seja, numero de caixas multiplicado pelo valor de cada caixa, esse valor é dado com 2 casas decimais (.2f), e a quantidade que restante de pregos, ou seja, total de pregos comprados (12*numero de caixas) menos a quantidade utilizada.
Como mencionado anteriormente, como não há uma validação de dados ou tratamento de exceções, alguns problemas irão surgir. Alguns exemplos:
--> O programa aceita quantidades negativas e nula (0) de pregos.
--> Caso o usuário digite algo que não seja um valor inteiro (por descuido, por exemplo) o programa será interrompido, ocorre uma exceção.