Цель моей программы - заставить компьютер задавать вопросы пользователю и возвращать некоторые спецификации для компьютера, которые соответствуют его потребностям. Сейчас я работаю над QuestionAsker, который отвечает, как подсказывает название класса, на вопросы пользователей. Я завис на 4-й строке функции AskQuestion (). Прежде чем рассказать о проблеме, взгляните на код:
from question import Question
class QuestionAsker():
questions = [
Question("At minimum, what should your game be running on?", ["Low", "Medium", "Ultra"]),
Question("On a scale of 1-3, how much flair do you want on your computer?", ["Low", "Medium", "Ultra"]),
Question("Money doesn't grow on trees. How much money is in your budget?", ["$500", "$1000", "$2000+"]),
]
index = 0
def AskQuestion(self):
userInputForQuestion = raw_input(self.questions[self.index].question + " ")
if userInputForQuestion not in self.questions[self.index].answers:
print("Try again.")
self.AskQuestion()
self.questions[self.index].selectedAnswer = userInputForQuestion
self.index += 1;
def resetIndex(self):
self.index = 0
def ReadQuestions(self):
pass
Я тестировал этот код, пару раз вызывая AskQuestion (чтобы просмотреть все вопросы), и чтобы убедиться, что этот код оказался слишком быстрым, я предоставил несколько ответов, которые возвращали «Попробуйте еще раз», как и должно быть. Проблема в том, что если я поставил более одного неправильного ответа на вопрос, но затем, если я ответил правильно после нескольких неправильных ответов, я получу следующее сообщение об ошибке:
IndexError: list index out of range
Я сразу заподозрил [self.index]
в self.questions[self.index]
, поэтому начал распечатывать указатель на консоль. Я думал, что проблема была в том, что AskQuestion волшебным образом увеличивал self.index в последней строке функции AskQuestion, но нет. Он продолжал печатать постоянное число, в случае первого вопроса, 0!
Я здесь, на мой взгляд, и другие вопросы, которые я видел по этому поводу, не очень помогли. Надеюсь, вы, ребята, можете помочь, спасибо!