【问题标题】:How to accept input without the need to press enter Python 3 [duplicate]如何接受输入而不需要按 Enter Python 3 [重复]
【发布时间】:2013-12-30 00:35:06
【问题描述】:

我想知道如何在无需按 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): ')

但我只是想通过不让用户每次都按 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()

但是 msvcrt 还是不行

【问题讨论】:

标签: python-3.x while-loop user-input


【解决方案1】:

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

import msvcrt

print ("Please enter a value.")
char = msvcrt.getch()
print char

如果你不使用windows,在source看下面的sn-p:

getch = _Getch()
print ("Please enter something: ")
x = getch()
print x

【讨论】:

  • 我必须导入一些东西才能让你的代码工作吗?
  • 不,它适用于 Windows 和 Unix!- 更多信息 here
  • 请注意,这显然不适用于 IDLE 或任何其他使用 pythonw.exe 或在缺少控制台的进程中嵌入 python 的环境。
  • @amin,正如我所说,它需要一个控制台窗口。您可以使用 ctypes 调用 kernel32.AllocConsole,然后打开特殊文件 "CONOUT$" 进行打印,但您必须在控制台窗口中键入 getwch 才能获取键盘输入消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
相关资源
最近更新 更多