Olá Bruno, tudo bem com você?
Peço desculpas pela demora em lhe responder.
Quando temos uma lista em Python vamos está buscando os objetos salvos nessa lista que ficam alocados em um índice e através desse índice vamos poder manipular os valores que estão na lista. Esse índice inicia por zero e vai até o comprimento da lista menos um.
Digamos que queremos criar uma lista com o nome de alunos, declaramos ela conforme abaixo:
nomes = ['Ana', 'Pedro', 'Paulo', 'Carla', 'Raul']
Temos uma lista com cinco (5) nomes, caso tivéssemos uma lista grande poderíamos usar a função len() para retornar para nós o comprimento da lista.
print(len(nomes))
# Resultado
5
Agora que sabemos o comprimento da lista, qual o índice de cada nome? Como falado inicialmente o índice vai de zero ao comprimento da lista menos um, podemos confirmar colocando em uma tabela como abaixo, a primeira linha contém os nomes e a segunda seus índices, contando da esquerda para a direita.
Nomes : | Ana | Pedro | Paulo | Carla | Raul |
---|
índice: | 0 | 1 | 2 | 3 | 4 |
Com a tabela acima conseguimos visualizar o índice de cada nome na lista.
Com a função random.randrange() podemos obter um número aleatório dentro de um intervalo especificado, vamos usá-la para buscar um nome aleatório na lista, para buscarmos um número em uma lista devemos informar em qual índice está a palavra; a nossa lista vai do índice 0 ao 4; devemos lembrar que o parâmetro inicial é inclusivo e o parâmetro final é exclusivo; com essas informações nosso código ficará da seguinte forma.
import random
nomes = ['Ana', 'Pedro', 'Paulo', 'Carla', 'Raul']
numero = random.randrange(0, 5)
print(nomes[numero])
Com o código acima podemos obter um nome da lista que esteja dentro do intervalo definido, mas, e para as listas em que não sabemos o tamanho total? Para elas podemos usa a função len() integrado com a função randrange(), ficando o código da seguinte forma:
import random
nomes = ['Ana', 'Pedro', 'Paulo', 'Carla', 'Raul']
print(len(nomes))
numero = random.randrange(0, len(nomes))
print(nomes[numero])
Observe que o len retorna o valor 5 e não 4. E isso ocorre porque a contagem para o len, começa com o valor 1 e não 0. Por isso, não há a necessidade de adicionarmos o +1 para buscarmos todos os valores da lista.
Abraços e bons estudos.
Em caso de mais dúvidas me coloco à disposição.