Python 为什么代码末尾的循环不起作用?

Python 为什么代码末尾的循环不起作用?,python,python-3.x,loops,pynput,Python,Python 3.x,Loops,Pynput,这是我的密码: import time from pynput import keyboard def on_press(key): if 'char' in dir(key): # check if char method exists, if key.char == 'q': # check if it is 'q' key print("1") def on_release(key): if 'char' in di

这是我的密码:

import time
from pynput import keyboard

def on_press(key):
     if 'char' in dir(key):  # check if char method exists,
        if key.char == 'q':  # check if it is 'q' key
                print("1")

def on_release(key):
    if 'char' in dir(key):  # check if char method exists,
        if key.char == 'q':  # check if it is 'q' key
            print("2")
# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()


string = 2
while True:
    time.sleep(1)
    if string == 2:
        print ("2")
    else:
        print ("1")

我正在尝试做一个循环,在上面的代码之后无限期地打印“2”。我真的是一个编程新手,如果这很明显,我很抱歉。

所以基本上你想做一个程序,以1秒的间隔无限期地打印出你在键盘上按下的键,下面是我的方法(我将使用键盘模块,因为我没有pynput及其更简单的经验):

所以这里的x等于你刚才在键盘上按的值,只要你不按其他任何键,它就不会改变

所以我们在这里使用了while 1,因为整数1总是等于整数1,它总是真的,基本上使用while true,没有区别,尽管您可能希望在主循环中使用while true,因为它比while 1更明显

它会使程序停止1秒钟

如果x='2':也可以使用整数,但我只想在那里的内部使用它


如果x等于2,则打印2

您不会在任何地方更改
字符串
。是的,我稍后会添加它,我希望现在只打印“2”Indefenetlyi如果你想要调试帮助,你需要提供它的确切含义是什么?它不起作用?它永远不会进入while循环,因为它永远不会退出键盘侦听器。谢谢你的回答,但我最初只是想按住一个键,然后在按下和释放键时打印一些内容。在这里,我尝试jusi don’当我按下或松开某个键时,不会有一个字符串发生变化,并且会有一个循环检测到它。如果我按住该键,我的操作系统就会对该键进行垃圾邮件处理,结果代码检测到我在按住某个键时多次按下该键。在这篇文章中,我说我希望循环无限期地打印2,以便我可以看到该循环作品
import time
import keyboard
x = keyboard.read_key()
while 1:
    time.sleep(1)
    if x == '2':
        print(2)