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.
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 , atualizamos:
n
count += 1
total += n
- Se
max_val
forNone
oun > max_val
, fazemosmax_val = n
. - Se
min_val
forNone
oun < min_val
, fazemosmin_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 (
• Maior número informado (
• Menor número informado (
• Média dos números informados (
• 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()