Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Esse código gerou um erro.

Estou tentando fazer o código dessa forma:

from random import randrange

nota_de_provas = []

for prova in range (1, 5):
  nota_de_provas.append(randrange(1, 11))
  print(f'A nota da P{prova} foi de {nota_de_provas[prova]}')

Porém o código esta me gerando esse erro:

ssa imagem para ajudar na acessibilidade

Alguém pode me ajuda?

2 respostas
solução!

Olá, Patrick! Tudo bom?

O erro está nos dizendo que nós estamos fora do limite do índice da lista. E por que isso ocorre?

No Python, o índice de uma lista começa no zero "0", e se a lista tem tamanho N, o último índice tem tamanho N-1. Então para a seguinte lista:

notas = [1.0, 2.0, 7.0, 8.0, 10.0, 4.2]

Nós temos 6 elementos, mas os índices da lista vão de 0 até 5.

No código da imagem, quando você utiliza o notas_de_provas.append() dentro de um laço de repetição que se repete 4 vezes, por conta do range(1, 5), nós criamos 4 elementos na lista, mas o índice só vai de 0 até 3. De forma só temos os índices notas_de_provas[0], notas_de_provas[1], notas_de_provas[2] e notas_de_provas[3].

Mas e o índice 4 que aparece no laço for e é passado no print()? Nós ainda não temos :(, e por isso o erro é mostrado.

E para corrigir, nós podemos iniciar a nossa contagem em 0, e finalizar em 4, porque aí continuaríamos a ter 4 notas registradas, e o índice da lista nota_de_provas estaria dentro do limite.

from random import randrange

nota_de_provas = []

for prova in range (0, 4): # ou também range(4)
  nota_de_provas.append(randrange(1, 11))
  print(f'A nota da P{prova} foi de {nota_de_provas[prova]}')

Ou também poderíamos reduzir 1 unidade no índice do print:

from random import randrange

nota_de_provas = []

for prova in range (1, 5):
  nota_de_provas.append(randrange(1, 11))
  print(f'A nota da P{prova} foi de {nota_de_provas[prova - 1]}')

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, Marcus Almeida! Tudo bom?

Cara muito obrigado pela explicação, me ajudou muito e solucionou o meu problema.