Faça um programa que recebe um conjunto de números inteiros, todos na mesma linha, os armazena em uma lista, e então exibe a soma dos positivos.
Entradas:
- Conjunto de números inteiros, em uma única linha.
Saídas:
- Soma dos números positivos.
Exemplo de Entrada:
Exemplo de Saída:
10
Entradas:
Exemplo de Saída:
10
Passo 1
O enunciado pede que se leia um conjunto de números inteiros, todos em uma única linha, e que se imprima a soma apenas dos números positivos.
Informações relevantes extraídas do enunciado:
Informações relevantes extraídas do enunciado:
- A entrada é uma única linha com vários números inteiros separados por espaços (por exemplo:
). - A saída deve ser a soma dos números que são estritamente maiores que zero (ou seja, somar apenas os
tais que ). - No exemplo dado, a entrada é
e a saída esperada é .
Passo 2
Como o programa recebe uma linha com vários números, o primeiro passo prático é transformar essa linha de texto em uma lista de valores numéricos. Em Python (uma escolha natural para resolver isso) faz-se assim em duas etapas:
- Ler a linha inteira como string (por exemplo usando
input()). - Usar o método
split()para dividir a string em pedaços separados por espaços.split()retorna uma lista de strings onde cada string representa um número escrito.
Explicando com um exemplo: se a linha for"1 -1 3 6 -2", então apóss.split()obtemos["1", "-1", "3", "6", "-2"].
Passo 3
Depois de obter a lista de strings, precisamos convertê-las para inteiros. Em Python usamos a função .
Aqui é importante entender que cada elemento é agora um número inteiro e podemos compará-lo numericamente com usando a condição
.
int() para cada elemento. Assim obtemos uma lista de inteiros, por exemplo
Aqui é importante entender que cada elemento é agora um número inteiro e podemos compará-lo numericamente com
Passo 4
Agora a lógica principal: percorrer a lista de inteiros e acumular em uma variável apenas os elementos que satisfaçam
. Esse padrão é muito comum e usa:
- Um acumulador inicializado em
(por exemplo s = 0). - Um laço que verifica cada número
xe fazif x > 0: s += x.
Explicando o porquê: começamos emporque somar nada dá zero; para cada número positivo adicionamos seu valor ao acumulador; números negativos e zero são ignorados porque a condição falha.
Passo 5
Programa completo em Python (comentado linha a linha). Este código lê a linha, transforma em inteiros, soma só os positivos e imprime o resultado:
# Ler a linha com os inteiros (ex: "1 -1 3 6 -2")
linha = input().strip()
# Se a linha for vazia, tratamos como lista vazia; caso contrário, dividimos por espaços
if linha == "":
numeros = []
else:
numeros = linha.split() # lista de strings como ["1", "-1", "3", "6", "-2"]
# Converter cada string para inteiro
numeros = [int(x) for x in numeros] # lista de inteiros [1, -1, 3, 6, -2]
# Somar apenas os positivos
soma = 0
for x in numeros:
if x > 0:
soma += x
# Imprimir o resultado
print(soma)
Comentário rápido: a compreensão de lista
[int(x) for x in numeros] faz a conversão de todos os elementos para inteiros em uma linha. O laço for com if x > 0 implementa a regra de somar somente os positivos.Passo 6
Vamos executar mentalmente o programa com o exemplo do enunciado para ver a conta passo a passo. Peguei do enunciado os números
.
- A lista de inteiros é
. - Testando um a um:
-
verdade → acumula (acumulador vira ) -
falso → ignora (continua ) -
verdade → acumula (acumulador vira ) -
verdade → acumula (acumulador vira ) -
falso → ignora (continua )
-
- Soma final calculada:
Passo 7
Casos especiais e complexidade:
- Se não houver números na linha (linha vazia), o programa deve imprimir
. No código acima isso já é tratado (lista vazia → soma fica ). - Se todos os números forem negativos ou zeros, a soma será
(nenhum elemento satisfaz ). - Complexidade: o algoritmo faz uma única leitura e percorre a lista uma vez, logo seu tempo é linear em relação ao número de inteiros
: . Espaço extra usado é também se convertermos toda a lista primeiro; podemos reduzir para lendo item a item (por exemplo iterando sobre linha.split()e convertendo cada elemento emintsem armazenar a lista inteira).
Passo 8
Dicas rápidas para a prova:
- Se o enunciado fala “uma única linha”, sempre pense em
split()para separar por espaços. - Use um acumulador e uma condição simples
if x > 0:para filtrar positivos — é a forma mais direta e segura. - Se quiser economizar memória, evite criar lista de inteiros inteira: faça
for token in linha.split(): x = int(token); if x > 0: soma += x.
Resposta
10