CSE 110: Introdução à Programação

Exemplo de Solução

Veja abaixo uma das maneiras de resolver esse problema. Essa não é a única solução possível.


"""
Autor: Irmão Burton

Objetivo: Praticar o uso de números em listas.
"""

# Por favor, observe que para este programa em especial, existem MUITAS maneiras de realizar a tarefa.
# O exemplo a seguir mostra uma maneira de fazer isso, mas não é a única. Em particular,
# muitas dessas tarefas podem ser feitas com funções embutidas (como max(numeros)), 
# mas essa abordagem destaca como calcular esses valores diretamente com loops.

print("Digite a lista de números. Digite 0 quando tiver terminado.")

numeros = []
numero = -1

while numero != 0:
    numero = int(input("Digite um número: "))

    if numero != 0:
        numeros.append(numero)

# Agora a lista "numeros" tem todos os valores que o usuário digitou

# Passo 1: Obtenha a soma (total)
soma = 0

for numero in numeros:
    soma += numero

print(f"A soma é: {soma}")

# Passo 2: Obtenha a média
# podemos usar o valor da soma que acabamos de calcular...
quantidade = len(numeros)
media = soma / quantidade

print(f"A média é: {media}")

# Passo 3: Obtenha o maior número
# Vamos percorrer os números novamente, desta vez acompanhando
# o maior número até o momento.

maior_ate_agora = -1

for numero in numeros:
    # Verifique se este número é maior que o anterior
    if numero > maior_ate_agora:
        # Este é o maior número até o momento, então atribua ele à variável
        maior_ate_agora = numero


print(f"O maior número é : {maior_ate_agora}")


########################
# Desafios Adicionais
########################

# Desafio Adicional 1: Encontrar o menor número positivo:

# Precisamos começar com um número grande
menor_ate_agora = 99999999999

# Observação: Se quiséssemos ser mais precisos aqui, em vez de começar com um número grande
# como acima, deveríamos percorrer a lista até encontrar um número positivo
# e usar esse como o menor_ate_agora. Estou usando essa abordagem porque é
# mais simples de visualizar e entender, mas e se a lista não tivesse números positivos?
# E se não houvesse nenhum valor menor do que o número grande que escolhi? Esses seriam problemas
# que seriam resolvidos pela abordagem mencionada.

for numero in numeros:
    if numero > 0 and numero < menor_ate_agora:
        # Temos um novo número menor
        menor_ate_agora = numero

print(f"O menor número positivo é: {menor_ate_agora}")

# Desafio Adicional 2: Ordenando a lista
lista_ordenada = sorted(numeros)

print("A lista ordenada é:")
for numero in lista_ordenada:
    print(numero)