Crie um programa em Python para entrar com diversos números reais diferentes de zero, ou seja, uma quantidade indefinida de números positivos e negativos. Quando o usuário informar o número zero, o programa deve mostrar a média dos números informados com quatro casas decimais. O programa deve ser feito com base no seguinte exemplo: Entre com um número: 1.5 Entre com um número: 3 Entre com um número: -1 Entre com um número: -12.3 Entre com um número: 17.7 Entre com um número: 0 Média dos números informados é 1.7800
Soluções para a tarefa
O programa abaixo não conta com uma validação dos dados enviados pelo usuário, portanto no caso de ser digitado um dado não válido como uma string, por exemplo, será retornado um erro/exceção. Assim, cabe ao usuário enviar corretamente os valores ao programa.
Obs.: Os pontos que precedem as linhas de programação não fazem parte do programa e devem, portanto, ser desconsiderados. Estes pontos foram colocados para garantir a indentação do código aqui no site.
acumulador = contador = 0
while True:
.....num = float(input('Entre com um número: '))
.....if num == 0:
..........break
.....acumulador += num
.....contador += 1
if contador == 0:
.....print('Média dos números informados é 0,0000')
else:
.....print(f'Média dos números informados é {acumulador/contador:.4f}')
Comentários:
--> Utilizamos um laço while infinito para manter a leitura contínua dos valores.
--> Para todo novo valor enviado, verificamos com uma estrutura condicional (if) se é igual a 0 e, caso seja, interrompemos o loop com a instrução break.
--> Enquanto o valor enviado é diferente de 0, vamos acumulando/somando estes valores na variável "acumulador" e incrementando a variável "contador", responsável por guardar a quantidade de valores enviados.
--> Perceba que fora do laço while, quando vamos mostrar a média ao usuário, fazemos uma verificação da quantidade de números enviados com uma estrutura condicional (if/else). Essa verificação é importante para não termos uma divisão por 0 que acarretaria em um erro/exceção, caso o primeiro valor enviado fosse 0.