首页 > 解决方案 > 在我的代码中索引错误第 13 行。列表索引超出范围

问题描述

我是 python 的新手,试图编写关于 ABC 测验的代码,一个关于 YT 的教程,但是当我运行它时显示错误。第 13 行,在 Question(question_prompts[1], "a"), IndexError: list index out of range

这是代码


question_prompts = [
"How many time does Sebastian Vettel win a World Driver Championship on F1?\n(a). never\n(b). 2x\n(c). 5x\n(d). 4x"
"When was the last time Michael Schumacher won f1 WDC?\n(a). year 2004\n(b). year 2011\n(c). year 2006\n(d). year 2005"
"Track that held an F1 Grand Prix more than any circuits\n(a). Monza\n(b). Silverstone\n(c). Monaco\n(d). Spa"
"What was the opening Grand Prix of the season before Australia become the season opener?\n(a.)Bahrain\n(b). China\n(c). Abu Dhabi\n(d). Spain"
"Who is the only driver that had 5 WDC until now?\n(a). Lewis Hamilton\n(b). Alain Prost\n(c). Juan Manuel Fangio\n(d). Aryton Senna"
]

questions = [
    Question(question_prompts[0], "d"),
    Question(question_prompts[1], "a"),
    Question(question_prompts[2], "a"),
    Question(question_prompts[3], "a"),
    Question(question_prompts[4], "c"),
]

def run_test(questions):
    score = 0
    for question in questions:
        answer = input(question_prompts)
        if answer == question.answer:
            score += 1

            print("Hey you got " + str(score) + " / " + str(len(questions)) + " Correct")

标签: pythonindex-error

解决方案


假设您希望您question_prompts成为一个包含 5 个元素的列表,那么您需要在每行的末尾使用逗号,如下所示:

question_prompts = [
    "How many time does Sebastian Vettel win a World Driver Championship on F1?\n(a). never\n(b). 2x\n(c). 5x\n(d). 4x",
    "When was the last time Michael Schumacher won f1 WDC?\n(a). year 2004\n(b). year 2011\n(c). year 2006\n(d). year 2005",
    "Track that held an F1 Grand Prix more than any circuits\n(a). Monza\n(b). Silverstone\n(c). Monaco\n(d). Spa",
    "What was the opening Grand Prix of the season before Australia become the season opener?\n(a.)Bahrain\n(b). China\n(c). Abu Dhabi\n(d). Spain",
    "Who is the only driver that had 5 WDC until now?\n(a). Lewis Hamilton\n(b). Alain Prost\n(c). Juan Manuel Fangio\n(d). Aryton Senna",
]

Python 具有字符串文字的隐式连接,因此:"a""b" == "ab".

由于这种隐式连接,您当前拥有的是一个具有单个元素的列表,如下所示:

question_prompts = [
    "How many time does Sebastian Vettel win a World Driver Championship on F1?\n(a). never\n(b). 2x\n(c). 5x\n(d). 4xWhen was the last time Michael Schumacher won f1 WDC?\n(a). year 2004\n(b). year 2011\n(c). year 2006\n(d). year 2005Track that held an F1 Grand Prix more than any circuits\n(a). Monza\n(b). Silverstone\n(c). Monaco\n(d). SpaWhat was the opening Grand Prix of the season before Australia become the season opener?\n(a.)Bahrain\n(b). China\n(c). Abu Dhabi\n(d). SpainWho is the only driver that had 5 WDC until now?\n(a). Lewis Hamilton\n(b). Alain Prost\n(c). Juan Manuel Fangio\n(d). Aryton Senna"
]

显然不是你的意图:)


推荐阅读