【问题标题】:Continuous random questions?连续的随机问题?
【发布时间】:2016-07-26 19:57:25
【问题描述】:

我希望我目前必须无限地检查问题列表或直到有人得到错误答案的代码。我目前正在使用

random.shuffle(questions)

for question in questions:
    question.ask()

询问列表中的每个问题一次。

如何让它不断询问直到用户输入错误答案?这是我当前的代码:

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。我想继续编辑同一个变量,但它给出了错误。

【问题讨论】:

  • 这真的是你的缩进吗?
  • Loops in Python 3.4.3 的可能重复项或任意数量的“一直询问用户直到___”问题 1234
  • 哦,我的错,我复制过来的时候好像搞砸了,我会修复的

标签: python class


【解决方案1】:

给 ask() 一个返回值可能值得一试。如果答案正确,则为 True,如果答案不正确,则为 False。可能是这样的:

def ask(self):
    response = input(self.question)
    if response == self.answer:
        print "CORRECT"
        return True
    else:
        print "wrong"
        return False

然后你可以遍历这样的问题:
(您首先必须创建一个分数变量!)

for q in questions:
    if q.ask() is True:
        score += 1
    else:
        break #Breaks out of the while loop

无论哪种方式,您都必须将答案设为字符串,以免将字符串与整数进行比较(永远不会相同),因此问题应如下所示:

questions = [
    Question("0", "0"),
    Question("π/6", "30"), 
    Question("π/3", "60"),
    Question("π/4", "45"),
    ...

希望能帮到你!

【讨论】:

    【解决方案2】:

    您可以使用类似这样的 while 循环来遍历列表

    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
    

    尚未对其进行测试,但这应该可以吗?它会一直持续到他们得到错误的答案,否则无限。 编辑:哎呀没有完全阅读,我会让询问返回正确或错误,然后将循环更改为

     while (answer == "CORRECT"):
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      相关资源
      最近更新 更多