我的question.info()
方法不会记住问question.ask()
方法中的任何内容。
我认为这是因为它从初始函数刷新,但是当我删除初始函数中首次定义变量的位置时,它会返回一个很大的错误。
这是我的代码:
import time
class question:
def __init__(self, question, answer):
self.question = question
self.answer = answer
self.time = 0
self.attempt = 0
self.correct = False
def ask(self):
start = time.clock()
self.attempt = input(self.question)
self.time = time.clock() - start
if self.attempt == str(self.answer):
self.correct = True
def info(self):
print("Question:", self.question)
print("Answer:", self.answer)
print("Attempt:", self.attempt)
print("Correct:", self.correct)
print("time taken:", self.time)
class test:
def __init__(self, qList):
self.qList = qList
def doTest(self):
for i in range(0, len(self.qList)):
question(self.qList[i][0],self.qList[i][1]).ask()
question(self.qList[i][0],self.qList[i][1]).info()
basicMath = [
["what is 1",1],
["what is 2",2],
["what is 3",3],
["what is 4",4],
["what is 5",5],
]
task = test(basicMath)
task.doTest()
答案 0 :(得分:4)
您创建单独的question
实例:
for i in range(0, len(self.qList)):
question(self.qList[i][0],self.qList[i][1]).ask()
question(self.qList[i][0],self.qList[i][1]).info()
你在那里打电话question()
两次。改为创建一个:
for i in range(0, len(self.qList)):
q = question(self.qList[i][0],self.qList[i][1])
q.ask()
q.info()
因为单独的实例保持其状态分开。
您应该直接在self.qList
上直接循环,而不是在此处使用range()
:
for question_text, answer in self.qList:
q = question(question_text, answer)
q.ask()
q.info()