关于python:连续随机问题?

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"):