Python:帮助修复秒表上的重置功能
我正在尝试制作一个秒表,从0开始计数,当它收到用户输入时可以重新启动。但是,当我尝试重置功能时,它不会将计时器重置为0,而是继续计数。我正在使用线程,因此它将继续计数并等待用户输入,因此我不确定如何修复它:Python:帮助修复秒表上的重置功能,python,stopwatch,Python,Stopwatch,我正在尝试制作一个秒表,从0开始计数,当它收到用户输入时可以重新启动。但是,当我尝试重置功能时,它不会将计时器重置为0,而是继续计数。我正在使用线程,因此它将继续计数并等待用户输入,因此我不确定如何修复它: import time import signal import threading def interrupted(signum, frame): pass signal.signal(si
import time
import signal
import threading
def interrupted(signum, frame):
pass
signal.signal(signal.SIGALRM, interrupted)
def count(s):
while True:
print(format(s))
s = s+1
time.sleep(1)
def i_input(): #this is the alert for interaction and the reset trigger when interacted with.
try:
print('Starting Stopwatch')
interact = input()
print('Stopwatch Reset.')
s=0
i_input()
except:
return
def count(s):
while True:
print(s)
s = s+1
time.sleep(1)
threading.Thread(target = i_input).start()
countThread = threading.Thread(target=count, args=(0,));
countThread.start();
如果有人能告诉我如何在用户输入时将其重置为0,我们将不胜感激。
s
在您的代码中是count
函数中的局部变量,因此您不能在i\u input
中更改它
当您在i_input
中执行s=0
时,它刚刚定义了另一个局部变量,也被命名为s
,但它是另一个范围的局部变量,因此它不会更改计数的s
解决方案是使s
成为一个全局变量。您可以通过在顶层定义它,然后在函数中放入global s
,这样它就不会被局部变量遮挡
导入时间
导入线程
def count():
全球s
尽管如此:
印刷品
s+=1
时间。睡眠(1)
def i_input():#这是交互警报和与交互时的重置触发器。
全球s
打印('启动秒表')
交互=输入()
打印('秒表重置')
s=0
i_输入()
s=0
threading.Thread(target=i_input.start())
threading.Thread(target=count).start()
为什么要定义两次计数
请将其减少并提高到预期值。显示中间结果与预期结果的偏差。变量s
是count
中的局部变量,因此不能仅在i\u input
中更改它。一个简单的解决方案就是把它变成一个全局变量。