Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

usando o len(palavras) no random não vai excluir a última linha do arquivo?

Dado que a função random.randrange é exclusiva, se eu usar como exposto o len(palavras) ela não vai deixar de mostrar a última palavra da lista?

1 resposta

Oi Luiz, como você está? Espero que esteja bem =)

Excelente pergunta!

O random.randrange é exclusivo ao último número e a função len irá nos retornar um valor que começa a contar do 1. Então se tivermos 5 palavras no arquivo, o len irá nos retornar o exato valor 5. Porém, os índices em Python começam do 0, o que quer dizer que aquelas 5 palavras para o Python começam do índice 0 e a última será o índice 4, por essa razão o random.randrange a incluirá. Caso começasse do índice 1, da maneira como está codificado a última palavra seria deixada de fora.

Você pode fazer um teste simples para confirmar isso:

  • Crie um arquivo palavras.txt com apenas 3 palavras, exemplo:
banana
uva
pera
  • Printe o valor sorteado pela função randrange e qual palavra pertence aquele índice, como mostro abaixo:
import random

def jogar():

    print("*********************************")
    print("***Bem vindo ao jogo da Forca!***")
    print("*********************************")

    arquivo = open("palavras.txt", "r")
    palavras = []

    for linha in arquivo:
        linha = linha.strip()
        palavras.append(linha)

    arquivo.close()

    print(len(palavras))

    numero = random.randrange(0, len(palavras))
    print(f'Indice: {numero} - Palavra do índice: {palavras[numero]}')

jogar()
  • Execute o código e perceba que todas as palavras serão sorteadas, incluído a última.

Espero ter ajudado e qualquer dúvida é só falar. Abraços e bons estudos!