用户点击ENTER键退出循环

时间:2011-08-31 10:07:36

标签: python while-loop

我是一名蟒蛇新手,并被要求使用while和for循环进行一些练习。我被要求进行程序循环,直到用户仅按<Return>请求退出。到目前为止,我有:

User = raw_input('Enter <Carriage return> only to exit: ')
running = 1
while running == 1:
    Run my program
if User == # Not sure what to put here
    Break
else
    running == 1

我尝试过:(按照练习中的指示)

if User == <Carriage return>

以及

if User == <Return>

但这只会导致语法无效。 请您以最简单的方式告诉我如何做到这一点。 感谢

14 个答案:

答案 0 :(得分:16)

我遇到了这个页面(没有双关语)寻找其他东西。这是我使用的:

while True:
    i = input("Enter text (or Enter to quit): ")
    if not i:
        break
    print("Your input:", i)
print("While loop has exited")

答案 1 :(得分:13)

你想要的确切的事情;)

https://stackoverflow.com/a/22391379/3394391

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

答案 2 :(得分:5)

实际上,我想你正在寻找一个运行循环的代码,直到从键盘上按下一个键。当然,程序不应该一直等待用户输入它。

  1. 如果你在python 2.7中使用raw_input()或在python 3.0中使用input(),程序会等待用户按一个键。
  2. 如果您不希望程序等待用户按键但仍想运行代码,那么您需要做一些更复杂的事情,您需要使用kbhit()函数msvcrt模块。
  3. 实际上,ActiveState中有一个配方可以解决这个问题。请按照link

    进行操作

    我认为以下链接也可以帮助您更好地理解。

    1. python cross platform listening for keypresses

    2. How do I get a single keypress at a time

    3. Useful routines from the MS VC++ runtime

    4. 我希望这可以帮助你完成工作。

答案 3 :(得分:2)

使用print语句查看raw_inputenter返回的内容。然后改变您的测试以与之比较。

答案 4 :(得分:0)

当您按Enter键时,您需要找出用户的样子。我不会给你完整的答案,但提示:解雇翻译并试一试。这并不难;)请注意,默认情况下print的sep为'\ n'(太多了:o)

答案 5 :(得分:0)

if repr(User) == repr(''):
    break

答案 6 :(得分:0)

一个非常简单的解决方案,我看你已经说过你了 我希望看到最简单的解决方案。 在停止循环等之后提示用户继续。

raw_input("Press<enter> to continue")

答案 7 :(得分:0)

user_input=input("ENTER SOME POSITIVE INTEGER : ")
if((not user_input) or (int(user_input)<=0)):    
   print("ENTER SOME POSITIVE INTEGER GREATER THAN ZERO") #print some info
   import sys        #import
   sys.exit(0)       #exit program 
'''
#(not user_input) checks if user has pressed enter key without entering  
# number.
#(int(user_input)<=0) checks if user has entered any number less than or 
#equal to zero.
'''

答案 8 :(得分:0)

这是最好最简单的答案。使用try和except电话。

x = randint(1,9)
guess = -1

print "Guess the number below 10:"
while guess != x:
    try:
        guess = int(raw_input("Guess: "))

        if guess < x:
            print "Guess higher."
        elif guess > x:
            print "Guess lower."
        else:
            print "Correct."
    except:
        print "You did not put any number."

答案 9 :(得分:0)

你快到了。完成此操作的最简单方法是搜索空变量,这是在输入请求时按Enter键时获得的变量。我的代码是3.5

running = 1
while running == 1:

    user = input(str('Enter <Carriage return> only to exit: '))

    if user == '':
        running = 0
    else:
        print('You had one job...')

答案 10 :(得分:0)

这适用于使用并行线程的python 3.5。您可以轻松地将其调整为仅对特定击键敏感。

import time
import threading


# set global variable flag
flag = 1

def normal():
    global flag
    while flag==1:
        print('normal stuff')
        time.sleep(2)
        if flag==False:
            print('The while loop is now closing')

def get_input():
    global flag
    keystrk=input('Press a key \n')
    # thread doesn't continue until key is pressed
    print('You pressed: ', keystrk)
    flag=False
    print('flag is now:', flag)

n=threading.Thread(target=normal)
i=threading.Thread(target=get_input)
n.start()
i.start()

答案 11 :(得分:-1)

这是一个有效的解决方案(类似于原始版本):

User = raw_input('Enter <Carriage return> only to exit: ')
while True:
    #Run my program
    print 'In the loop, User=%r' % (User, )

    # Check if the user asked to terminate the loop.
    if User == '':
        break

    # Give the user another chance to exit.
    User = raw_input('Enter <Carriage return> only to exit: ')

请注意,原始问题中的代码有几个问题:

  1. if / else位于while循环之外,因此循环将永远运行。
  2. else缺少冒号。
  3. 在else子句中,有一个双等于而不是相等。这不执行赋值,它是无用的比较表达式。
  4. 它不需要运行变量,因为if子句执行break

答案 12 :(得分:-1)

以下是我的作品:

i = '0'
while len(i) != 0:
    i = list(map(int, input(),split()))

答案 13 :(得分:-2)

如果您希望用户按Enter键,则raw_input()将返回“”,因此请将用户与“”进行比较:

User = raw_input('Press enter to exit...')
running = 1
while running == 1:
    Run your program
if User == "":
    break
else
    running == 1