13

I have a function that evaluates input, and I need to keep asking for their input and evaluating it until they enter a blank line. How can I set that up?

while input != '':
    evaluate input

I thought of using something like that, but it didn't exactly work. Any help?

user3033494
  • 159
  • 1
  • 2
  • 6

4 Answers4

30

There are two ways to do this. First is like this:

while True:             # Loop continuously
    inp = raw_input()   # Get the input
    if inp == "":       # If it is a blank line...
        break           # ...break the loop

The second is like this:

inp = raw_input()       # Get the input
while inp != "":        # Loop until it is a blank line
    inp = raw_input()   # Get the input again

Note that if you are on Python 3.x, you will need to replace raw_input with input.

  • This will raise an EOF error at the last input if there is no further input – Snigdha Batra Jan 10 '17 at 12:23
  • @SnigdhaBatra You can avoid it with: except EOFError: break – Kiryl Plyashkevich Jan 11 '22 at 21:07
  • Every time I write a while loop where the variable that the condition checks is set inside the loop (so that you have to initialize that variable before the loop, like in your second example), it doesn't feel right. And then I search for `python repeat until` to remind myself that I should just accept that feeling :) – Mathieu Dhondt Feb 16 '22 at 09:21
2

This is a small program that will keep asking an input until required input is given.

we should keep the required number as a string, otherwise it may not work. input is taken as string by default

required_number = '18'

while True:
    number = input("Enter the number\n")
    if number == required_number:
        print ("GOT IT")
        break
    else:
        print ("Wrong number try again")

or you can use eval(input()) method

required_number = 18

while True:
    number = eval(input("Enter the number\n"))
    if number == required_number:
        print ("GOT IT")
        break
    else:
        print ("Wrong number try again")
Billy
  • 1,157
  • 1
  • 9
  • 18
Shahid Ghafoor
  • 829
  • 8
  • 17
1

you probably want to use a separate value that tracks if the input is valid:

good_input = None
while not good_input:
     user_input = raw_input("enter the right letter : ")
     if user_input in list_of_good_values: 
        good_input = user_input
theodox
  • 12,028
  • 3
  • 23
  • 36
0

Easier way:

required_number = 18

user_number = input("Insert a number: ")
while f"{required_number} != user_number:
    print("Oops! Something is wrong")
    user_number = input("Try again: ")
print("That's right!")

#continue the code
Neuron
  • 5,141
  • 5
  • 38
  • 59