Continuous random questions?
我希望我目前的代码能够无限地查看问题列表,或者直到有人得到错误的答案。 我目前正在使用
1 2 3 4 | random.shuffle(questions) for question in questions: question.ask() |
一次询问列表中的每个问题。
在用户输入错误答案之前,如何让它连续询问? 这是我目前的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | class Question(object): def __init__(self, question, answer): self.question = question self.answer = answer def ask(self): response = input(self.question) if response == self.answer: print"CORRECT" else: print"wrong" questions = [ Question("0", 0), Question("π/6", 30), Question("π/3", 60), Question("π/4", 45), Question("π/2", 90), Question("2π/3", 120), Question("3π/4", 135), Question("5π/6", 150), Question("π", 180), Question("7π/6", 210), Question("4π/3", 240), Question("5π/4", 225), Question("3π/2", 270), Question("5π/3", 300), Question("7π/4", 315), Question("11π/6", 330), Question("2π",360), ] |
另外,如果你能告诉我如何为每个正确的问题添加一个分数,那将非常感激。 我尝试这样做,但我已经有一个程序,每5秒从全局分数变量中扣除1。 我想继续编辑同一个变量,但它会出错。
可能值得尝试给ask()一个返回值。 如果答案是正确的,则为True;如果答案不正确,则为False。 这看起来像这样:
1 2 3 4 5 6 7 8 | def ask(self): response = input(self.question) if response == self.answer: print"CORRECT" return True else: print"wrong" return False |
然后你可以迭代这样的问题:
(你首先要创建一个得分变量!)
1 2 3 4 5 | for q in questions: if q.ask() is True: score += 1 else: break #Breaks out of the while loop |
无论如何,你必须做出你的答案字符串,以便不将字符串与整数(它永远不会相同)进行比较,所以问题应如下所示:
1 2 3 4 5 6 | questions = [ Question("0","0"), Question("π/6","30"), Question("π/3","60"), Question("π/4","45"), ... |
我希望我能帮到你!
你可以用一个像这样的while循环遍历列表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | score = 0 currIndex = 0 #ask a question to start off q1 = questions[currIndex] #get the answer answer = q1.ask() while(answer == q1.answer): #ask the question at this index score+=1 q1=questions[currIndex] answer = q1.ask() currIndex+=1 #reset the loop? if currIndex == len(questions)-1: currIndex = 0 |
尚未测试它但这应该工作? 直到他们无限地得到错误的答案为止。
编辑:whoops没有完全读取,我会让问题返回正确或错误,然后将循环更改为
1 | while (answer =="CORRECT"): |