Error List index out of range

1

I'm developing a quiz with Python and I'm having a problem that I think is simple but I can not solve it. When the person completes the quiz the message that was to appear does not appear and gives an error:

Traceback (most recent call last):
    File "python", line 83, in <module>
    File "python", line 26, in verificacao
IndexError: list index out of range

Follow the code:

# coding=utf-8

print ("Escolha a dificuldade para o quiz. Escolha F para fácil, M para médio, ou D para difícil.")


# Lista de tentativas já realizadas
count_list = []

perguntas = [
    "Digite a palavra que substituirá o espaço 0: ",
    "Digite a palavra que substituirá o espaço 1: ",
    "Digite a palavra que substituirá o espaço 2: ",
    "Digite a palavra que substituirá o espaço 3: "
]


def verificacao(frase, respostas, tentativas):
    # Verifica e conta as palavras de todo o quiz
    print
    print (frase)
    print

    index = 0

    while len(count_list) < tentativas and index < (tentativas + 1):
        pergunta = input(perguntas[index]).lower()

        if index == tentativas and pergunta == respostas[index]:
          print ("Você ganhou o quiz! Parabéns!")
          break

        if pergunta == respostas[index]:
            print ("Você acertou!")
            frase = frase.replace(str(index), respostas[index])
            print (frase)
            index += 1
            print

        else:
            count_list.append(1)
            print ("Opa, você errou. Você tem mais " + str(
                tentativas - len(count_list)) + " tentativa(s).")

            if len(count_list) == tentativas:
                print ("Você perdeu. Continue tentando.")
                break


# Variaveis do quiz: frases e respostas
frase_facil = "Água __0__, pedra __1__, tanto __2__ até que __3__."
frase_medio = "De __0__, poeta e __1__, todo __2__ tem um __3__."
frase_dificil = "Um __0__, de exemplos __1__ mais que uma __2__ de __3__."

frase = [frase_facil, frase_medio, frase_dificil]

respostas_facil = ['mole', 'dura', 'bate', 'fura']
respostas_medio = ['medico', 'louco', 'mundo', 'pouco']
respostas_dificil = ['grama', 'vale', 'tonelada', 'conselhos']

respostas = [respostas_facil, respostas_medio, respostas_dificil]


def attempts():
    # Verifica se a quantidade de tentativas que o usuario escolheu esta correta, se for ele retorna, caso contrario aparece uma mensagem para tentar novamente.
    while True:
        try:
            tentativas = int(
                input("Quantas tentativas que você quer? "))
            return tentativas
            break
        except ValueError:
            print("Você precisa colocar um algarismo. Tente outra vez.")
            continue


while True:
    # Input do usuário a partir do nível de dificuldade e número de tentativas escolhidos, para iniciar o quiz correto. Retorna se for valido, caso contrario aparece mensagem pedindo para tentar novamente.
    nivel_dificuldade = input("Nível de dificuldade: ")
    tentativas = attempts()

    if nivel_dificuldade.lower() == "f" or nivel_dificuldade.lower(
    ) == "facil" or nivel_dificuldade.lower() == "fácil":
        verificacao(frase_facil, respostas_facil, tentativas)
        break
    elif nivel_dificuldade.lower() == "m" or nivel_dificuldade.lower(
    ) == "medio" or nivel_dificuldade.lower() == "médio":
        verificacao(frase_medio, respostas_medio, tentativas)
        break
    elif nivel_dificuldade.lower() == "d" or nivel_dificuldade.lower(
    ) == "dificil" or nivel_dificuldade.lower() == "difícil":
        verificacao(frase_dificil, respostas_dificil, tentativas)
        break
    print ("Escolha a dificuldade do seu quiz, você precisa apertar a letra F, M ou D. Tente novamente.")
    
asked by anonymous 20.08.2018 / 17:31

1 answer

0

This error only happens when you try to call an index value that has no value or has not been initialized (eg, call an index = 4 in a list with 3 items). the more likely it is that the error will occur because you increment the index indefinitely while in the game ... which causes it to exit the list. I would recommend separating the index that increments from the index that the list reads. Otherwise your code of the odd bugs of undefinition of variables when I tested here, so I do not know if there are other errors

    
20.08.2018 / 19:32