我在64位Windows 7上运行python 2.7。

这是我正在执行的代码:

import sys
while True:
    print 'please enter a character:'
    c = sys.stdin.read(1)
    print 'you entered', str(c)


在Eclipse的PyDev环境中,我得到以下输出,分别输入a和b。

please enter a character:
a
you entered a
please enter a character:
you entered
please enter a character:
you entered

please enter a character:
b
you entered b
please enter a character:
you entered
please enter a character:
you entered

please enter a character:


它正确地获取一次输入,然后执行两次以跳过用户输入。

现在,当我在python终端中为输入a和b运行相同的代码时,得到以下输出:

enter char
a
you entered a
enter char
you entered

enter char
b
you entered b
enter char
you entered

enter char


一旦获得用户输入并跳过用户输入,就会执行此操作。

是什么导致此问题?如何使Python无限循环一次读取一个字符?

最佳答案

问题可能是由于\n持续存在而导致的stdin刷新。

或者,使用raw_input

while True:
    c = raw_input('please enter a character: ')
    print 'you entered', c


有关冲洗部分,请参见this

09-18 22:22