1
resposta

[Dúvida] A título de curiosidade

Fui programador Java, parei de programar em 2008 quando virei Gerente de Projetos e desde o ano passado resolvi voltar a estudar programação e ainda tenho vícios de como eu resolvia as questões e que agora estão simplicadas. Nesse exercício eu implementei da seguinte forma:

#Exercício 3

valores = [10, 20, 30, 40, 50]
soma = 0

for i in range(len(valores)): #No gabarito está: for i in valores:
    soma = soma + i #No gabarito está:  soma += i
print ("Soma das receitas", soma) #print(f"A soma total das receitas é: {soma}")

Minha solução funciona! A solução do gabarito também, só que com sintaxe mais simplificada e mais moderna.

1 resposta

Oii, João.

Que bacana saber um pouco da sua história e ver seu retorno aos estudos de programação! É muito natural trazer a sintaxe e a estrutura de pensamento do Java, e essa bagagem de lógica vai te ajudar bastante.

Olhando o seu código, percebi um detalhe muito importante que vale a pena comentar, pois o resultado pode ter te enganado. Vamos analisar juntos?

O detalhe do range() e do índice

No seu código, você usou a estrutura:

for i in range(len(valores)):
    soma = soma + i

Aqui acontece uma pegadinha comum. A função range(len(valores)) gera uma sequência de números que representam as posições (índices) da lista, e não os valores guardados nela.

Para a lista [10, 20, 30, 40, 50], o i vai valer: 0, 1, 2, 3, 4.
Ao fazer soma = soma + i, seu código está somando esses índices () e não os preços dos produtos ().

Como ajustar mantendo sua lógica "estilo Java"

Se você quiser manter o laço com o índice (o que é perfeitamente válido em várias situações), precisamos usar esse índice para acessar o valor dentro da lista, assim:

valores = [10, 20, 30, 40, 50]
soma = 0

for i in range(len(valores)):
    # O ajuste principal é aqui: acessamos a lista 'valores' na posição 'i'
    soma = soma + valores[i] 

print("Soma das receitas:", soma)

O "jeito Python" (gabarito)

A solução do instrutor usa o for in direto na lista. O Python consegue percorrer cada item sem precisar saber a posição dele.

  • Vantagem: O código fica mais limpo e direto, evitando erros de índice (como acessar uma posição que não existe).
  • Leitura: Lê-se quase como "para cada numero em numeros".

Ambas as formas resolvem o problema (com o ajuste do índice), mas a segunda é a mais comum no dia a dia com Python por ser mais direta.

Parabéns por testar e compartilhar sua solução! Continue praticando e trazendo suas dúvidas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!