2016-04-15 15 views
1

これはおそらく馬鹿に聞こえるかもしれませんが、基本的なカウンタを作ることはできません。基本的には、2つのリアルタイム入力、正のポイントのキーボード 'f'、負のポイントのキーボード 'j'を持つ必要があります。その後、反復を止めて何回fとjキーそれぞれ押された。キーボード入力で基本的なpythonカウンタを作る

編集:これはイライラしています。私はリアルタイムで入力するためにmsvcrtモジュールが必要であることを知るためにさらに調べました。しかし、それでも何もしない、コードが実行されて終了する、何も起こりません。

ここに私がしたいことがあります: 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' - >陽性=陽性+1(比較対代入)。また、 'negative'と' positive'は 'if'の外で定義されていないので、その値は保持されません。 – jDo

答えて

1

多くの問題がありますが、ここにいくつかの参考になります。代わりに、NUM = NUM​​ + 1の

- 使用NUM + = 1

はそれらをインクリメントする前に、あなたのカウンターを定義します。

ループ内で入力を移動すると、最初の入力を何度も繰り返し使用し、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

あなたは、各反復中に、これらの変数に加えられた変更を維持するためにwhileループの外positivenegativeを定義する必要があります。例えば。ように:

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

positive==positive+1に小さな入力があります。私はあなたがpositive=positive+1(対比対比)を意味すると思う

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

これはキーを検出してから値を増やすことができます。もちろん、コードを外挿する必要がありますが、フレームワークはすべてあなたが成功するためのものです。

関連する問題