我是新编程,并想增加一个计数器,从你的分数每2秒扣减1。(因此,我必须尽快回答,以使我的分数增加)
chr
import random
import time
radians2 = None
ans = None
score = 0
radians1 = ['0', 'π/6', 'π/3', 'π/4', 'π/2', '2π/3', '3π/4', '5π/6', 'π', '7π/6', '4π/3', '5π/4', '3π/2', '5π/3', '7π/4', '11π/6', '2π']
while radians2 == ans or ans == None:
radians3 = (random.choice(radians1))
ans = input(radians3)
if radians3 == '0':
radians2 = 0
elif radians3 == 'π/6':
radians2 = 30
elif radians3 == 'π/3':
radians2 = 60
elif radians3 == 'π/4':
radians2 = 45
elif radians3 == 'π/2':
radians2 = 90
elif radians3 == '2π/3':
radians2 = 120
elif radians3 == '3π/4':
radians2 = 135
elif radians3 == '5π/6':
radians2 = 150
elif radians3 == 'π':
radians2 = 180
elif radians3 == '7π/6':
radians2 = 210
elif radians3 == '4π/3':
radians2 = 240
elif radians3 == '5π/4':
radians2 = 225
elif radians3 == '3π/2':
radians2 = 270
elif radians3 == '5π/3':
radians2 = 300
elif radians3 == '7π/4':
radians2 = 315
elif radians3 == '11π/6':
radians2 = 330
elif radians3 == '2π':
radians2 = 360
score = score + 1
if radians2 == ans:
print('Correct!')
print "You've got %d in a row" % score
print "You lose, the correct answer was %d" % radians2对不起,如果代码很乱/很长,我想基本上运行以下代码:
while 1:
time.sleep(2)
score = score - 1唯一的问题是不能与程序的其他部分同时运行,线程(这似乎是另一种选择)让我非常困惑。
发布于 2016-07-26 07:47:07
您可以使用以下代码启动新线程,并在它的run()方法中编写任何函数逻辑。
import threading
import time
class RepeatEvery(threading.Thread):
def __init__(self, interval):
threading.Thread.__init__(self)
self.interval = interval # seconds between calls
self.runable = True
def run(self):
global score # make score global for this thread context
while self.runable:
time.sleep(self.interval)
if self.runable:
score = score - 1
self.runable = False
def stop(self):
self.runable = False上面的代码将迭代到线程可运行(self.runable= True),因此2秒后,分数将减少1,运行方法内的循环将中断,并将终止。
因此,为了调用上面的线程,请执行以下操作。
score_thread = RepeatEvery(2)
score_thread.start() 这将调用线程构造函数init,并用2秒或从这里传递的任何值初始化interval变量。
为了同时停止线程,只需调用stop()方法即可。
score_thread.stop() 您还可以调用join()方法,等待线程完成其执行。
score_thread.join() 看上去不那么令人困惑
发布于 2016-07-26 07:48:57
如果不想使用任何线程,则可以使用corutine,每次调用生成器的下一个方法时,都会产生经过的时间:
def timer():
prev_time = new_time = 0
while True:
prev_time, new_time = new_time, time.clock()
time_delta = new_time - prev_time
yield time_delta
>>> t = timer()
>>> t.next()
4.399568842253459e-06
>>> t.next()
1.7571719571481994
>>> t.next()
0.8449679931366727https://stackoverflow.com/questions/38583559
复制相似问题