用输入打破循环

时间:2015-03-24 07:27:40

标签: python python-3.x

我试图在一个问题上创建一个输入计时器,让用户在决定没有输入与错误答案相同之前有5秒钟回答问题,但没有人想要用10英尺极点,所以我试图以不同的方式去做它并用输入打破for循环? 有人有建议吗?

import random
import operator
qLimit = 10
oqLimit = 10
score = 0
maxNum = 10
timeLimit = 0
otimeLimit = 5
import time

ops = {
    '+':operator.add,
    '-':operator.sub
}

def generateQuestion():
    x = random.randint(1,maxNum)
    y = random.randint(1,maxNum)
    op = random.choice(list(ops.keys()))
    a = ops.get(op)(x,y)
    print("What is {} {} {}?\n".format(x, op, y))
    return a

def askQuestion(a):
    timeLimit = otimeLimit
    for i in range(0,timeLimit):
        guess = input("")
        print (timeLimit - i)
        time.sleep(1)
        if timeLimit == 0:
            try:
                integer_input = int(guess)
            except ValueError:
                print('Please enter a valid number')
                return
            global score
            if integer_input == a:
                print("Correct!")
                score += 1
            else:
                print("Wrong, the answer is",a)


while qLimit != 0:
    askQuestion(generateQuestion())
    qLimit -= 1
    print ("You have", qLimit, "questions remaining")
    print("Your score is",score)
    if (qLimit == 0):
        break

1 个答案:

答案 0 :(得分:0)

调整the Python docs的示例:

import signal

class OutOfTime(Exception):
    "too slow"

def handler(signum, frame):
    raise OutOfTime("no input received")

try:
    # Set the signal handler and a 5-second alarm
    signal.signal(signal.SIGALRM, handler)
    signal.alarm(5)
    ans = input('What is your favorite color? ')
    signal.alarm(0)
except OutOfTime:
    print('\nout of time! too slow!')
else:
    print('%s, huh?  Mine, too!' % ans)