2016-04-15 10 views
1

Das klingt wahrscheinlich dumm, aber ich kann nicht scheinen, einen grundlegenden Zähler zu machen. Grundsätzlich brauche ich zwei Echtzeit-Eingänge, Tastatur 'f' für positive Punkte, Tastatur 'j' für negative Punkte, dann brauche ich noch einen Eingang 'q', um die Iteration zu stoppen und dann zu drucken, wieviele f und j Tasten wurden jeweils gedrückt.machen grundlegende Python-Zähler mit Tastatureingabe

bearbeiten: Okay, das ist frustrierend. Ich suchte mehr um herauszufinden, dass für die Echtzeit-Eingabe brauche ich msvcrt-Modul, ich habe Windows so kein Problem. Aber es tut immer noch nichts, der Code läuft nur und beendet, nichts passiert.

Folgendes möchte ich tun: 1. Führen Sie den Code aus. 2. Öffnen Sie ein Freestyle-Video im Hintergrund. 3. Drücken Sie die Taste j und f auf der Tastatur bzw. in Echtzeit, um die Freestyle-Punktzahl zu zählen. Sie basiert auf Klicks, positiven Punkten (j) und negativen Punkten (f). 4. Video endet, ich drücke q, um zu drucken, wie oft ich die Taste j und f gedrückt habe.

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

'positiv == positiv + 1' ->' positiv = positiv + 1' (Vergleich vs. Zuweisung). Außerdem werden 'negative' und' positive' nicht außerhalb des 'if' definiert, so dass ihre Werte nicht bestehen bleiben. – jDo

Antwort

1

Es gibt viele Probleme, aber hier sind ein paar Hinweise.

Statt num = num + 1 - Verwendung num + = 1

Ihre Zähler definieren, bevor sie erhöht wird.

Verschieben Sie Ihre Eingabe in die Schleife, sonst wird die erste Eingabe immer wieder verwendet und Sie durchlaufen nur die gesamte Schleife mit einem Eingang.

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

Sie haben positive und negative außerhalb der while Schleife zu definieren, die Änderungen dieser Variablen während jeder Iteration zu halten. Z.B. so wie:

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

Es gibt einen kleinen Tippfehler in positive==positive+1. Ich denke du meinst positive=positive+1 (Vergleich vs. Zuordnung)

0

Die allgemeine Syntax Ihres Zählers ist korrekt, wenn Sie möchten, dass etwas im Hintergrund läuft und außerhalb der Konsole funktioniert, dann brauchen Sie etwas wie pyHook. getch() wird in dieser Situation nicht funktionieren.

, die den Tastendruck erkennen und dann können Sie die Werte erhöhen. Natürlich müssen Sie den Code extrapolieren, aber das Framework ist für Sie da, um erfolgreich zu sein.