Reputation: 131
I am a python newbie and have been asked to carry out an exercise: make a program loop until exit is requested by the user hitting <Return>
only. So far I have:
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
I have tried: (as instructed in the exercise)
if User == <Carriage return>
and also
if User == <Return>
but this only results in invalid syntax.
How do I do this in the simplest way possible?
Upvotes: 13
Views: 138961
Reputation: 31186
Here's a solution (resembling the original) that works:
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: ')
Note that the code in the original question has several issues:
if
/else
is outside the while loop, so the loop will run forever.else
is missing a colon.if
clause performs a break
.Upvotes: 0
Reputation: 4490
If you want your user to press enter, then the raw_input()
will return ""
, so compare the User
with ""
:
User = raw_input('Press enter to exit...')
running = 1
while running == 1:
... # Run your program
if User == "":
break
Upvotes: -2
Reputation: 1
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.
Upvotes: 0
Reputation: 487
The exact thing you want ;)
from answer by limasxgoesto0 on "Exiting while loop by pressing enter without blocking. How can I improve this method?"
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
Upvotes: 17
Reputation: 151
This works for python 3.5 using parallel threading. You could easily adapt this to be sensitive to only a specific keystroke.
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()
Upvotes: 2
Reputation: 1
The following works from me:
i = '0'
while len(i) != 0:
i = list(map(int, input(),split()))
Upvotes: -3
Reputation: 358
You are nearly there. the easiest way to get this done would be to search for an empty variable, which is what you get when pressing enter at an input request. My code below is 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...')
Upvotes: 0
Reputation: 1
Here is the best and simplest answer. Use try and except calls.
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."
Upvotes: -1
Reputation: 1
a very simple solution would be, and I see you have said that you would like to see the simplest solution possible. A prompt for the user to continue after halting a loop Etc.
raw_input("Press<enter> to continue")
Upvotes: -1
Reputation: 795
I ran into this page while (no pun) looking for something else. Here is what I use:
while True:
i = input("Enter text (or Enter to quit): ")
if not i:
break
print("Your input:", i)
print("While loop has exited")
Upvotes: 22
Reputation: 4828
Actually, I suppose you are looking for a code that runs a loop until a key is pressed from the keyboard. Of course, the program shouldn't wait for the user all the time to enter it.
raw_input()
in python 2.7 or input()
in python 3.0, The program waits for the user to press a key.kbhit()
function in msvcrt
module.Actually, there is a recipe in ActiveState where they addressed this issue. Please follow this link
I think the following links would also help you to understand in much better way.
I hope this helps you to get your job done.
Upvotes: 5
Reputation: 4002
You need to find out what the variable User would look like when you just press Enter. I won't give you the full answer, but a tip: Fire an interpreter and try it out. It's not that hard ;) Notice that print's sep is '\n' by default (was that too much :o)
Upvotes: 0
Reputation: 13576
Use a print statement to see what raw_input
returns when you hit enter
. Then change your test to compare to that.
Upvotes: 1