【发布时间】:2020-08-03 13:28:16
【问题描述】:
我只是在 Python 中练习,遇到了一个问题,我正在尝试从一个文本文件生成一个测验,该测验会从该文件中询问一个随机问题。
应该阅读问题,然后列出答案,并用文件中的逗号分隔它们,在尝试随机化之前确实有效。
目前它只是读取该行的第一个字符,然后在尝试打印“detail[1]”时显示错误“列表索引超出范围”。例如,如果它选择文本文件中的第 3 行,将读取“C”,然后输入时会出现错误。
文本文件如下:
A,What is 1+1?,1,2,3,4,b,
B,What is 2+2?,1,2,3,4,d,
C,What is 3+3?,2,4,6,8,c,
D,What is 4+4?,4,8,12,18,b,
E,What is 6+6?,18,12,10,9,b,
F,What is 1+2?,1,2,3,4,c,
G,What is 5+5?,5,6,7,10,d,
H,What is 2*2?,2,4,6,8,b,
代码如下:
import random
class question:
def rand_line(fname):
lines = open(fname).read().splitlines()
return random.choice(lines)
file = rand_line("questions.txt")
for line in file:
detail = line.split(",")
print(detail[0])
input()
print(detail[1])
print("a: ", detail[2])
print("b: ", detail[3])
print("c: ", detail[4])
print("d: ", detail[5])
print("Select A, B, C or D: ")
select = input()
if select == detail[6]:
print("correct!")
else:
print("incorrect")
【问题讨论】:
-
在循环之前查看
file。它包含什么?然后看看循环本身:for line in file。这还有意义吗?line在循环中有什么值? -
将
random.choice(...更改为random.choices(...
标签: python python-3.x random