Python:帮助修复秒表上的重置功能

Python:帮助修复秒表上的重置功能,python,stopwatch,Python,Stopwatch,我正在尝试制作一个秒表,从0开始计数,当它收到用户输入时可以重新启动。但是,当我尝试重置功能时,它不会将计时器重置为0,而是继续计数。我正在使用线程,因此它将继续计数并等待用户输入,因此我不确定如何修复它: import time import signal import threading def interrupted(signum, frame): pass signal.signal(si

我正在尝试制作一个秒表,从0开始计数,当它收到用户输入时可以重新启动。但是,当我尝试重置功能时,它不会将计时器重置为0,而是继续计数。我正在使用线程,因此它将继续计数并等待用户输入,因此我不确定如何修复它:

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
中更改它。一个简单的解决方案就是把它变成一个全局变量。