如果包含raw_input的语句只是打印键入的任何内容

时间:2016-04-08 22:38:38

标签: python raw-input

我对python和编程很新,我想在键盘上按“w”时打印字符串“forward”。这是一个测试,我将转变为机动车辆的遥控器。

while True:
    if raw_input("") == "w":
        print "forward"

为什么只打印出我键入的每个键?

2 个答案:

答案 0 :(得分:2)

在Python 2.x中,raw_input函数将显示所有按下的字符,并在收到换行符后返回。如果您想要不同的行为,您将不得不使用不同的功能。这是Python的可移植版本的getch,它将返回每个按键:

while True:
    if getch() == "w":
        print "forward"

可以像这样使用:

{{1}}

答案 1 :(得分:1)

raw_input读取整行输入。您输入的行将对您可见,您可以执行键入一些文本的操作:

aiplanes

左边几个字符来解决你的拼写错误:

airplanes

回到最后并删除一个字符,因为你不是故意让它复数:

airplane

然后点击输入raw_input将返回"airplane"。当您按下键盘键时,它不会立即返回。

如果想要读取单个键,则需要使用较低级别的终端控制例程来获取输入。在Unix上,curses模块将是一个合适的工具;我不确定你在Windows上使用了什么。我之前没有这样做,但在Unix上,我认为您需要将终端设置为原始或cbreak模式,并使用window.getkey()window.getch()进行输入。您可能还必须使用curses.noecho()关闭回显;我不确定它是否包含在raw / cbreak模式中。