这可能听起来很愚蠢,但我似乎无法做出一个基本的反击。基本上我需要它有两个实时输入,键盘'f'表示正点,键盘'j'表示负点,然后我需要一个输入'q'来停止迭代,然后打印f和j键的次数分别被按下了。
编辑:好的,这令人沮丧。我搜索了更多,以找出实时输入我需要msvcrt模块,我使用Windows所以没有问题。但是,它仍然没有做任何事情,代码只是运行并退出,没有任何反应。
这是我想要做的: 1.运行代码。 2.在后台打开自由式视频。 3.分别实时按键盘上的j和f键计算自由泳得分,它基于咔嗒声,正点(j)和负点(f)。 4.视频结束,按q键打印我按下j和f键的次数。
import msvcrt
def counter():
negative = 0
positive = 0
while True:
score = input("input starts:")
if msvcrt.getch() == "f":
negative += 1
print(negative)
if msvcrt.getch() == "j":
positive +=1
print(positive)
if msvcrt.getch() == "q":
print ("positive", positive)
print ("negative", negative)
break
答案 0 :(得分:1)
有很多问题,但这里有一些指示。
而不是num = num + 1 - 使用num + = 1
在递增计数器之前定义计数器。
将您的输入移动到循环中,否则它将反复使用第一个输入,并使用一个输入运行整个循环。
def counter():
end=1
negative = 0
positive = 0
while end <= 1000:
end += 1
score = input("input here:")
if score == "f":
negative += 1
print(negative)
if score == "j":
positive +=1
print(positive)
if score == "q":
print ("positive", positive)
print ("negative", negative)
break
counter()
答案 1 :(得分:1)
您必须在positive
循环之外定义negative
和while
,以保持在每次迭代期间对这些变量所做的更改。例如。像这样:
def counter():
score = input("input here:")
end=1
positive = 0
...
positive==positive+1
中有一个小错字。我认为你的意思是positive=positive+1
(比较与分配)
答案 2 :(得分:0)
你的计数器的一般语法是正确的,但如果你想在后台运行某些东西并在控制台之外运行,那么你需要像pyHook这样的东西。 getch()不会在这种情况下工作。
from pyHook import HookManager
from win32gui import PumpMessages, PostQuitMessage
class Keystroke_Watcher(object):
def __init__(self):
self.hm = HookManager()
self.hm.KeyDown = self.on_keyboard_event
self.hm.HookKeyboard()
def on_keyboard_event(self, event):
try:
if event.KeyID == keycode_youre_looking_for:
self.your_method()
finally:
return True
def your_method(self):
pass
def shutdown(self):
PostQuitMessage(0)
self.hm.UnhookKeyboard()
watcher = Keystroke_Watcher()
PumpMessages()
将检测按键,然后您可以增加值。当然,你需要推断代码,但框架就是你成功的基础。