Python:帮助修复秒表的重置功能
Python: Help fixing the reset function on my stopwatch
我正在尝试制作一个秒表,从 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_input
.
中更改它
当你在 i_input
中执行 s=0
时,这只是定义了另一个局部变量也命名为 s
,但它在不同的范围内是局部的,所以它不会改变 count
的s
.
解决办法是让s
成为一个全局变量。您可以通过在顶层定义它,然后将 global s
放入函数中来做到这一点,这样它就不会被局部变量覆盖。
import time
import threading
def count():
global s
while True:
print(s)
s += 1
time.sleep(1)
def i_input(): # this is the alert for interaction and the reset trigger when interacted with.
global s
print('Starting Stopwatch')
interact = input()
print('Stopwatch Reset.')
s = 0
i_input()
s = 0
threading.Thread(target=i_input).start()
threading.Thread(target=count).start()
我正在尝试制作一个秒表,从 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_input
.
当你在 i_input
中执行 s=0
时,这只是定义了另一个局部变量也命名为 s
,但它在不同的范围内是局部的,所以它不会改变 count
的s
.
解决办法是让s
成为一个全局变量。您可以通过在顶层定义它,然后将 global s
放入函数中来做到这一点,这样它就不会被局部变量覆盖。
import time
import threading
def count():
global s
while True:
print(s)
s += 1
time.sleep(1)
def i_input(): # this is the alert for interaction and the reset trigger when interacted with.
global s
print('Starting Stopwatch')
interact = input()
print('Stopwatch Reset.')
s = 0
i_input()
s = 0
threading.Thread(target=i_input).start()
threading.Thread(target=count).start()