python - 在我的代码中索引错误第 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")
解决方案
假设您希望您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"
]
显然不是你的意图:)
推荐阅读
- c - 并发线程和数据竞争
- java - Draw on Android's surfaceView
- testng - 如何在循环中多次运行具有许多测试方法的 testng 类文件
- c# - c# 后面的代码中绑定了不正确的数据
- logstash - Logstash 对 Crate DB 的支持
- tsql - How to correct this if exists query?
- yarnpkg - 运行`react-scripts`时如何查找依赖项
- solr - Solr查询由父级选择的拓扑
- pandas - 如何使用 Pandas 使用来自所有其他列的数据创建新列变量
- angular - 有没有办法在 angular-bootstrap-datetimepicker 中配置最小日期