Faça um programa que leia do usuário valores inteiros até que seja digitado o número zero. Depois apresente os seguintes dados:
a) Total de números foram informados;
b) Maior e menor números informados;
c) Média dos números informados.

Passo 1

Estamos diante de um problema de leitura de dados com sentinela: o programa deve ler inteiros até que o usuário digite zero. Em seguida, precisa apresentar (a) a quantidade total de números lidos (excluindo o zero), (b) o maior e o menor valor lido e (c) a média desses números. Para resolver isso, vamos usar:
  • um laço de repetição que só termina quando o valor lido for zero;
  • variáveis de acumulação para contar entradas e somar valores;
  • variáveis para registrar o maior e o menor valor visto;
  • ao final, cálculo da média como soma dividida pela quantidade.

Passo 2

Inicializamos as variáveis antes do laço:
count = 0 (conta quantos números foram lidos)
total = 0 (soma acumulada dos números)
max_val = None e min_val = None (para armazenar, respectivamente, o maior e o menor valor encontrados)

Passo 3

Iniciamos um laço infinito (while True) para ler um inteiro do usuário. Em cada iteração, fazemos n = int(input(...)). Se n for zero, interrompemos o laço com break, pois zero é o sentinela.

Passo 4

Dentro do laço, quando n \neq 0, atualizamos:
  1. count += 1
  2. total += n
  3. Se max_val for None ou n > max_val, fazemos max_val = n.
  4. Se min_val for None ou n < min_val, fazemos min_val = n.

Passo 5

Depois do laço, verificamos se count > 0. Em caso afirmativo, calculamos a média como avg = total / count. Se count for zero, significa que o usuário digitou zero logo de cara e nenhum número válido foi informado.

Passo 6

Por fim, exibimos:
• Total de números informados (count)
• Maior número informado (max_val)
• Menor número informado (min_val)
• Média dos números informados (avg com duas casas decimais, por exemplo)

Resposta

def main():
 count \(=0\)
 total \(=0 max_val\) = None
 \(min_val\) = None

 while True:
 n = int(input("Digite um inteiro (0 para sair): "))
 if n \(==0\):
 break

 count \(+=1\)
 total \(+=\) n

 if \(max_val\) is None or n > \(max_val\):
 \(max_val\) = n
 if \(min_val\) is None or n < \(min_val\):
 \(min_val\) = n

 if count > 0:
 avg = total / count
 print(f"Total de números informados: {count}")
 print(f"Maior número informado: {max_val}")
 print(f"Menor número informado: {min_val}")
 print(f"Média dos números informados: {avg:.2f}")
 else:
 print("Nenhum número válido foi informado.")

if __name__ \(==\) "__main__":
 main()

Exercícios relacionados