2016-04-15 36 views
1

这可能听起来很愚蠢,但我似乎无法做出基本的计数器。基本上我需要它有两个实时输入,正点的键盘'f',负点的键盘'j',然后我需要再输入一个'q'来停止迭代,然后打印多少次f和j键分别按下。使用键盘输入制作基本的python计数器

编辑:好吧,这是令人沮丧的。我搜索了更多,以找出实时输入我需要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

'positive == positive + 1' - >'positive = positive + 1'(compare versus assignment)。另外,'negative'和'positive'没有在'if'之外定义,所以它们的值不会持续。 – jDo

回答

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

你必须定义positivenegativewhile外循环,保持每次迭代中对这些变量所做的更改。例如。像这样:

def counter(): 
    score = input("input here:") 
    end=1 
    positive = 0 
    ... 

有一个小的错字positive==positive+1。我认为你的意思是positive=positive+1(比较vs任务)

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

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