Python sys.stdin.read()接受输入条件打印提示符两次



我编写了一个函数,它接受一个字符(不点击enter),检查是否验证,并返回按下的键。但问题是,如果值不匹配,我打印的提示符会打印两次。这是我的代码。

def accept_input():
    while True:
        print "Type Y to continue, ctrl-c to exit"
        ch = sys.stdin.read(1)
        if ch != "Y":
            pass
        else:
            return ch

,当调用accept_input()时,当存在不匹配的字符时,它将打印两次提示符,如果输入为空白则打印一次。

python accept_input.py 
Type Y to continue, ctrl-c to exit
a
Type Y to continue, ctrl-c to exit
Type Y to continue, ctrl-c to exit
b
Type Y to continue, ctrl-c to exit
Type Y to continue, ctrl-c to exit
c
Type Y to continue, ctrl-c to exit
Type Y to continue, ctrl-c to exit
Type Y to continue, ctrl-c to exit
Type Y to continue, ctrl-c to exit
Y
accepted

为什么在输入任何不匹配的键时打印两次,而在输入空白键时只打印一次?

谢谢。

那是因为在a之后你也按了n…2个字符。你可以清空缓冲区

def accept_input():
    import sys
    while True:
        print "Type Y to continue, ctrl-c to exit"
        ch = sys.stdin.read(1)
        sys.stdin.flush()   #<===========
        if ch != "Y":
            pass
        else:
            return ch

最新更新