2016-04-15 63 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() 

這將檢測按鍵,然後你可以增加值。當然,你需要推斷代碼,但是框架就是你的成功之處。