【发布时间】:2014-09-16 05:43:33
【问题描述】:
这个程序会询问用户问题,但每个问题只给他/她 10 秒的时间来回答。如果他们在时限内回答了问题,程序就会在那个瞬间进入下一个问题。此外,如果他们没有在规定时间内回答,程序将在 10 秒后跳到下一个问题。我知道计时器类,我该如何整合它来做到这一点?这是我到目前为止的代码。不要担心 pmXXXXX 的东西,这是我用于学校项目的软件。
#question1
one = raw_input("Question 1:" + "\n" + qa + "\n" + "x" + "\n" + "A. Brightens it" + "\n" + "B. A gradient of black to white." + "\n" + "C. A color pallete.")
if(one.lower() == "b"):
print "Congrats! 10 points."
pmNewComputedImage("Question 1 Answer", 256, 256, "x")
score += 10
else:
print "Wrong. -10 points. Here's the answer."
window1 = pmNewComputedImage("Question 1 Answer", 256, 256, "x")
score -= 10
#question2
pmNewComputedImage("Question 2", 256, 256, "x*2")
two = raw_input("Question 2:" + "\n" + qb + "\n" + "A. x/2" + "\n" + "B. y/2" + "\n" + "C. x*2")
if (two.lower() == "c"):
print "Congrats! 10 points."
score += 10
else:
print "Wrong -10 points. The answer is C."
score -= 10
def stopwatch(seconds):
import time
start = time.time()
time.clock()
elapsed = 0
while elapsed < seconds:
elapsed = time.time() - start
print "Seconds count: %02d" % elapsed
time.sleep(1)
【问题讨论】:
-
如果用户花的时间太长,你想打断他,放弃提示和他已经输入的任何内容,等等?还是等他,然后告诉他他花了太长时间?如果是前者,这需要跨平台吗?如果没有,您需要它用于什么平台?
-
我想如果达到 10 秒,然后关闭现有的问题窗口并显示另一个窗口说“超时”,然后进入下一个问题。我不清楚,你说的平台是什么意思?
-
什么窗口?您正在使用
raw_input,它只要求输入当前标准输入。如果您在 IDLE 开发环境中运行(您的真实用户都不会这样做),这会涉及一个弹出窗口,但通常它将是命令行上启用 readline 的提示。 -
对于“平台”:Mac、Windows、Linux 等。但理想情况下,尽可能具体:Windows 8.1 64-bit with official-installer 64-bit Python 2.7.4,或 OS X 10.9 .3 和 Homebrew 安装的 Python 2.7,或 Red Hat Enterprise Linux 5 和默认的 Python 2.6.8,或其他。
-
只是一个旁注。与其在输入提示中的许多小字符串之间使用
+,不如将提示作为单个字符串进行,如下所示:"Question 1:\n%s\nx\nA. Brightens it\nB. A gradient of black to white.\nC. A color palette." % qa。然后您可以将所有提示字符串收集到一个整洁的元组或列表中。此外,if(one.lower() == "b"):会比if one.upper() == "B"):更好,因为您在提示符中使用大写。
标签: python timer while-loop