Informática, perguntado por bmax1997, 10 meses atrás

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

Respondido por GeBEfte
2

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.

Anexos:

bmax1997: Muito Obrigado!!!! você me salvou!
Perguntas interessantes