通过按Enter键退出而不阻塞。我该如何改进这种方法?

时间:2014-03-13 21:19:01

标签: python loops input exit enter

所以我一直在阅读有关如何通过用户按下回车键退出while循环的一些内容,我已经提出以下内容:

import sys, select, os

switch = 1
i = 1
while switch == 1:
    os.system('cls' if os.name == 'nt' else 'clear')
    print "I'm doing stuff. Press Enter to stop me!"
    print i
    while sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        line = raw_input()
        if not line:
            print "Finished! =]"
            switch = 0
        else:
            print "Finished! =]"
            switch = 0
    i = i+1

有没有办法整理一下?特别是“if not line”和下面的“else”看起来很乱。它们可以组合成一个吗?使用“开关”的更好选择?

最初,如果我输入了一堆字符,然后点击输入,它就不会停止循环。我必须再次按回车键。 if not和else组件旨在将其设置为在第一次按Enter时退出。

1 个答案:

答案 0 :(得分:9)

这对我有用:

import sys, select, os

i = 0
while True:
    os.system('cls' if os.name == 'nt' else 'clear')
    print "I'm doing stuff. Press Enter to stop me!"
    print i
    if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        line = raw_input()
        break
    i += 1

您只需要检查输入的stdin一次(因为第一个输入将终止循环)。如果条件行/非行有结果,则可以将它们组合到一个if语句中。然后,只使用一个while语句,您现在可以使用break而不是设置标记。