如何接受输入而不需要按 Enter Python 3

ami*_*min 3 user-input while-loop python-3.x

我想知道如何在不需要按 Enter 的情况下接受输入。我在网上搜索,我得到了一些关于 raw_input 的信息,但我认为在 python 3.0 到来后它变得过时了。有时,我会在整个程序上运行一个 while 循环,因为我想问用户:继续吗?(是/否):

例如考虑代码:

import random

d = input('Toss coin? (y/n): ')

while d != 'n' and d!= 'N':
    c = random.randint(1,2)
    if c == 1:
        print('HEADS!')
    else:
        print('TAILS!')

    d = input('Toss coin? (y/n): ')
Run Code Online (Sandbox Code Playgroud)

但我只想通过不让用户每次都按 Enter 来为我的程序添加更多光晕。只需按 y 或 n,程序就会相应地循环或中断。

好的,这是新代码:

import random
import msvcrt

d = input('Toss coin? (y/n): ')

while d != 'n' and d!= 'N':
    c = random.randint(1,2)
    if c == 1:
        print('HEADS!')
    else:
        print('TAILS!')

    print('Toss coin? (y/n): ')
    d = msvcrt.getwch()
Run Code Online (Sandbox Code Playgroud)

但 msvcrt 仍然不起作用

LPH*_*LPH 6

如果您使用的是 Windows,msvcrt答案是:

import msvcrt

print ("Please enter a value.")
char = msvcrt.getch()
print char
Run Code Online (Sandbox Code Playgroud)

如果您不使用 Windows,请查看此来源的以下代码段:

getch = _Getch()
print ("Please enter something: ")
x = getch()
print x
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这显然不适用于 IDLE 或任何其他使用 pythonw.exe 或在缺少控制台的进程中嵌入 python 的环境。 (4认同)
  • 不,它适用于 Windows 和 Unix!-更多信息[这里](http://code.activestate.com/recipes/134892/) (2认同)
  • @amin,正如我所说,它需要一个控制台窗口。你可以使用 ctypes 调用 `kernel32.AllocConsole`,然后打开特殊文件 `"CONOUT$"` 打印到它,但你必须在控制台窗口中输入 `getwch` 来获取键盘输入消息. (2认同)