我正在尝试用Python进行测验。我发现许多教程使用print(“问题”)打印问题,但我认为这需要花费大量时间来编写。我将所有问题都保存在文本文档中。我不能列出清单并从文件中导入问题吗? 像infile =“questions.txt”,“r”)
我知道这适用于简单的列表,例如(苹果,橙子,香蕉),但如果问题是多行的,就像多项选择题一样,那么它在列表中是如何工作的?
另外,我想我可以有一个单独的答案列表,所以问题[2]会与答案[2]等相匹配。这个列表很容易,因为它们是单个字母。
任何帮助和建议将不胜感激!谢谢!
答案 0 :(得分:2)
一种简单的方法是在问题之间添加一个空行来创建文件。
with open("questions.txt", "rU") as infile:
questions = infile.read().split("\n\n")
答案 1 :(得分:0)
您可以使用以下格式将所有问题和答案存储在文本文件中。文件中的每一行可以包含一个问题,一个正确答案和一个可能答案列表。例如:
What is 1+1 2 2 4 6 8
Subtract 5 from 25, what do you get 20 10 30 25 20 12
因此,对于第一行,您有问题,2
的答案和四个可能的答案。
每个部分后添加tab
个字符。然后可以使用Python的CSV库将每个问题读入列表。从此列表中,您可以随机选择一个测验问题,如下所示:
import csv, random
with open("questions.csv", "r") as f_input:
csv_input = csv.reader(f_input, delimiter="\t")
quiz = list(csv_input)
while True:
# Choose a random question from the quiz
question = random.choice(quiz)
print "%s?" % (question[0])
while True:
# Display the possible answers with commas and 'or' at the end.
print "Is the answer: %s or %s?" % (", ".join(question[2:-1]), question[-1])
user_answer = raw_input()
# Did the user select a valid choice?
if user_answer in question[2:]:
break
# Stop asking questions?
if len(user_answer) == 0:
print "Good bye"
break
if user_answer == question[1]:
print "Correct"
else:
print "Incorrect"
print
此脚本会将您的所有问题和答案读入名为quiz
的单个列表中。测验中的第一个条目如下:
['What is 1+1', '2', '2', '4', '6', '9']
第一部分是问题,第二部分是正确答案,其余条目是您想要提供的尽可能多的答案。如果用户只按Enter键,测验将完成。
希望这有帮助。
使用Python 2.7进行测试