Questão 17: Crie uma função soma_indices_pares (lista) que retorne a soma dos elementos que estão nos índices pares da lista (índice 0,2,4 \ldots ).
Exemplo: soma_indices_pares([10, 5, 20, 3, 40]) deve retornar 10+20+40=70.

Passo 1

O enunciado pede para eu criar uma função chamada soma_indices_pares(lista) que retorne a soma dos elementos de uma lista que estão em índices pares, ou seja, índices 0,2,4,\ldots.
Informações relevantes fornecidas:
  • O nome da função deve ser soma_indices_pares.
  • A função recebe um parâmetro chamado lista.
  • Deve somar apenas os elementos cujos índices são pares (índice 0, 2, 4, etc.).
  • Exemplo dado: para a entrada [10,5,20,3,40] o resultado esperado é 10+20+40=70.

Passo 2

Entendendo bem o que é “índice par” numa lista: em Python (e na maioria das linguagens), os índices começam em 0. Então os índices pares são exatamente aqueles números inteiros não-negativos que são múltiplos de 2: 0,2,4,\ldots. Isso significa que eu quero acessar lista[0], lista[2], lista[4], … até o final da lista.

Passo 3

Estratégia simples e segura para a prova: percorrer os índices pares da lista e acumular os valores em uma variável total. Para percorrer índices pares eu posso usar range(start, stop, step) com step = 2. Em termos de parâmetros:
  • start = 0 (começar em índice 0),
  • stop = len(lista) (parar quando alcançar o comprimento da lista),
  • step = 2 (pular de 2 em 2 índices, obtendo 0,2,4,\ldots).
A ideia geral (em pseudocódigo):
  • iniciar total = 0
  • para cada i em range(0, len(lista), 2): fazer total += lista[i]
  • retornar total

Passo 4

Vamos explicar cada parte do código que implementa essa ideia, linha a linha, como se eu estivesse escrevendo na prova.
Linha 1: definir a função:
def soma_indices_pares(lista):
  • Aqui eu declaro a função com o nome exigido e um parâmetro lista que é a lista de entrada.
Linha 2: inicializar acumulador:
total = 0
  • Crio uma variável total que vai guardar a soma parcial. Inicializo com 0 porque somar nada dá zero.
Linha 3–4: percorrer índices pares e somar:
for i in range(0, len(lista), 2):
total += lista[i]
  • range(0, len(lista), 2) gera a sequência de índices 0,2,4,\ldots até o último índice menor que len(lista).
  • Em cada iteração, i é um índice par e lista[i] é o elemento nessa posição; somo esse elemento em total com total += lista[i].
Linha 5: devolver o resultado:
return total
  • Retorno o valor final da soma.

Passo 5

Aplicando o código no exemplo para verificar passo a passo:
  • Entrada: lista = [10, 5, 20, 3, 40].
  • len(lista) é 5. range(0, 5, 2) gera os índices 0,2,4.
  • Iterações:
    • i=0: total = 0 + lista[0] = 0 + 10 = 10
    • i=2: total = 10 + lista[2] = 10 + 20 = 30
    • i=4: total = 30 + lista[4] = 30 + 40 = 70
  • Resultado: 70, que é exatamente 10+20+40=70.

Passo 6

Vou mostrar uma alternativa mais “pythônica” e curta que faz a mesma coisa usando slicing:
  • lista[::2] cria uma nova lista contendo somente os elementos de índices pares (start padrão 0, step 2).
  • Então sum(lista[::2]) soma esses elementos direto.
    Essa alternativa é válida e muito usada em provas quando é permitido usar funções built-in.

Passo 7

Complexidade e casos especiais (o que anotar na prova):
  • Complexidade de tempo: ambas as abordagens (loop com range ou sum(lista[::2])) são O(n), onde n é len(lista), porque precisamos olhar todos os elementos com índices pares — algo na ordem de metade dos elementos, ainda O(n).
  • Caso lista esteja vazia (len(lista)=0), o loop não roda e a função retorna 0 — comportamento desejável.
  • Pressuposição: os elementos de lista são números (inteiros ou reais). Se houver outros tipos, pode ocorrer erro ao somar; na prova costuma-se assumir que a lista contém números.

Passo 8

Código final (implementação clara e adequada para a prova). Essa versão é direta, fácil de escrever e de explicar rapidamente durante uma prova:

Resposta

def soma_indices_pares(lista):
total = 0
for i in range(0, len(lista), 2):
total += lista[i]
return total

Exercícios relacionados