我在为我儿子的复习作业创建测验时遇到了一些问题。这是一个阅读文本文件的测验,并以随机顺序显示问题。当他回答了每个问题两次时,测验就结束了。
所以他可以给自己计时,我该如何在其中添加计时器,计时器在显示第一个问题时开始,并在他两次正确回答每个问题时打印出来?我使用的是python 3.3。
以下是到目前为止的代码:
import random
import time
#open the text file
myfile = open("james.txt")
mylines = myfile.read().splitlines()
wrong = 0
#make blank lists
questions = []
answers = []
scores = []
#Seperate the file into Question and answer
for linenumber in range(0, len(mylines), 2):
questions.append(mylines[linenumber])
answers.append(mylines[linenumber+1])
scores.append(0)
#Ask Question
for questionnumber in range(0,len(questions)):
while scores[questionnumber] <2:
questions.append(mylines[linenumber])
questionnumber = random.randint(0,len(questions))
print(questions[questionnumber])
print(scores)
#Generate Possible Answer
possibleanswers = []
possibleanswers.append(answers[questionnumber])
for answerposition in range(1,3):
randomnum = random.randint(0,len(answers)-1)
while answers[randomnum] in possibleanswers:
randomnum = random.randint(0,len(answers)-1)
possibleanswers.append(answers[randomnum])
#Shuffle Answers
random.shuffle(possibleanswers)
for answernumber in range(0,len(possibleanswers)):
print(answernumber+1,possibleanswers[answernumber])
input1 = int(input())
givenanswer = possibleanswers[input1-1]
if givenanswer == answers[questionnumber]:
print("Yes")
scores[questionnumber] = scores[questionnumber]+1
else:
print("No, the answer was",questionnumber)
wrong = wrong+1发布于 2014-04-24 03:32:12
questionnumber = random.randint(0,len(questions))randint是包含的,所以它可以返回len(questions)之前的任何数字。如果它返回最大可能的数字,那么您将得到一个IndexError。例如,如果questions是三个元素的长度,那么questions[3]将超出范围。
缩小随机数的允许范围:
questionnumber = random.randint(0,len(questions)-1)编辑:在您的#ask question循环中似乎也有一个拼写错误,这导致questions比answers更大。
for questionnumber in range(0,len(questions)):
while scores[questionnumber] <2:
questions.append(mylines[linenumber])
# ^^^ this line这似乎是一个复制-粘贴错误。在这里追加到questions没有多大意义,因为在#Seperate代码之后应该已经完全填充了它。我建议删除这一行。
https://stackoverflow.com/questions/23253041
复制相似问题