用键盘输入制作基本的python计数器

时间:2016-04-15 14:22:41

标签: python counter

这可能听起来很愚蠢,但我似乎无法做出一个基本的反击。基本上我需要它有两个实时输入,键盘'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

3 个答案:

答案 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循环之外定义negativewhile,以保持在每次迭代期间对这些变量所做的更改。例如。像这样:

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()

将检测按键,然后您可以增加值。当然,你需要推断代码,但框架就是你成功的基础。