如何将用户输入作为按键,检测它,并使程序在Python中相应地运行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将用户输入作为按键,检测它,并使程序在Python中相应地运行?相关的知识,希望对你有一定的参考价值。

我目前正在学习python并决定创建一个基本游戏HiLo。我已经设法对基础知识进行了编码,但现在我想更进一步,并将答案作为关键新闻。起初我创建了一个列表,其中包含可用的答案“h,l等”但现在我让用户按向上箭头键为高,向下箭头键为低,检查答案是否正确。

我尝试过msvcrt,键盘和pyautogui模块,但我似乎无法使其工作。

import random
import pygame
from msvcrt import getch


name = input("Please enter your name: ")
print("Welcome {}".format(str(name)))

print(
    "Okay {}. We will now play a game called high or low. In order to play this game you have to be 18 or older".format(
        str(name)))

age = int(input("Please enter your age: "))
print(age)

if age < 18:
    print("You are not old enough the play.")
    exit
else:
    print("OK! You are {}. You can play".format(str(age)))

x = random.randint(1, 9)
y = random.randint(1, 9)

print("Your first number is {}.".format(str(x)))

counter = 0
truecounter = 0
falsecounter = 0

while  counter <= 10: 
    print("Press UP for high and DOWN for low.")
    getch()
    if  and y > x: #If UP Arrow is pressed and Y is greater than X 
        truecounter += 1
        print("Your answer is correct!. The other number was " + str(y))
        x = random.randint(1, 9)
        y = random.randint(1, 9)
        print("Let's see if you can do it again. The number is")
        print(x)

    elif and y < x: #If DOWN Arrow is pressed and Y is smaller than X 
        truecounter += 1
        print("Your answer is correct!. The other number was " + str(y))
        x = random.randint(1, 9)
        y = random.randint(1, 9)
        print("Let's see if you can do it again. The number is")
        print(x)

    elif  and y > x: #If DOWN ARROW is pressed and Y is greater than X
        falsecounter += 1
        print("Ooops! You guessed wrong. The number was " + str(y))
        x = random.randint(1, 9)
        y = random.randint(1, 9)
        print("Let's see if you can do it again. The number is")
        print(x)
    elif  and y < x: #If UP ARROW is pressend and Y is smaller than X
        falsecounter += 1
        print("Ooops! You guessed wrong. The number was " + str(y))
        x = random.randint(1, 9)
        y = random.randint(1, 9)
        print("Let's see if you can do it again. The number is")
        print(x)

    counter += 1

print("Congrats! You got " + str(truecounter) + " out of 10!")

我希望根据用户的输入(向上或向下箭头键),代码将检查数字并向真或假计数器添加一个点。

答案

这有效。键盘库有什么问题?

import random
import keyboard


name = input("Please enter your name: ")
print("Welcome {}".format(str(name)))

print(
    "Okay {}. We will now play a game called high or low. In order to play this game you have to be 18 or older".format(
    str(name)))

age = int(input("Please enter your age: "))
print(age)

if age < 18:
    print("You are not old enough the play.")
    exit
else:
    print("OK! You are {}. You can play".format(str(age)))

x = random.randint(1, 9)
y = random.randint(1, 9)

print("Your first number is {}.".format(str(x)))

counter = 0
truecounter = 0
falsecounter = 0
def check(key):
    global UP_PRESS,DOWN_PRESS,run
    if key.__dict__["event_type"] == "down":
        DOWN_PRESS = True
        run = True
    elif key.__dict__["event_type"] == "up":
        UP_PRESS = True
        run = True

    else:
        raise KeyError("Not the right Key")

while  counter <= 10: 
    print("Press UP for high and DOWN for low.")
    UP_PRESS = False
    DOWN_PRESS = False
    run = False
    while not run:
        keyboard.unhook_all()
        try:
            event = keyboard.hook(check)
        except: 
            print("ERROR: Press Arrow Up or Arrow Down")
    print("
")
    if UP_PRESS and y > x: #If UP Arrow is pressed and Y is greater than X 
            truecounter += 1
            print("Your answer is correct!. The other number was " + str(y))
            x = random.randint(1, 9)
            y = random.randint(1, 9)
            print("Let's see if you can do it again. The number is")
            print(x)

    elif DOWN_PRESS and y < x: #If DOWN Arrow is pressed and Y is smaller than X 
           truecounter += 1
           print("Your answer is correct!. The other number was " + str(y))
           x = random.randint(1, 9)
           y = random.randint(1, 9)
           print("Let's see if you can do it again. The number is")
           print(x)

    else:
          falsecounter += 1
          print("Ooops! You guessed wrong. The number was " + str(y))
          x = random.randint(1, 9)
          y = random.randint(1, 9)
          print("Let's see if you can do it again. The number is")
          print(x)

    counter += 1

print("Congrats! You got " + str(truecounter) + " out of 10!")

以上是关于如何将用户输入作为按键,检测它,并使程序在Python中相应地运行?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测按键?

如何检测vaadin TextArea中的输入按键

如何在Java中检测按键

如何在 Qt 应用程序中生成按键事件到系统(win7)(模拟用户在键盘上按键)?

按键时的低延迟声音

Arduino 按键输入检测,消抖示例程序