I'm writing a function that prompts for input and then returns different results based on the input and then asks for input again. I've got it returning the correct values, but I'm not sure how to make it prompt for input again.
Here's the actual code of the function:
def interact():
command = raw_input('Command:')
command = command.split(' ')
if command[0] == 'i':
bike_name = command[1] + ' ' + command[2]
return get_product_id(products, bike_name)
if command [0] == 'n':
return get_product_name(products, command[1])
if command[0] == 'c':
return compute_cost(products, part, command[1])
if command[0] == 'p':
return get_parts(products, command[1])
In each line with return in it, it is simply calling up a previously defined function. The products and part are dictionaries, defined previously.
I can only use the builtin functions.
-
docs.python.org/tutorial/…Ignacio Vazquez-Abrams– Ignacio Vazquez-Abrams2011年04月05日 03:12:06 +00:00Commented Apr 5, 2011 at 3:12
-
Sorry but asking for such a basic question how writing a loop is tutorial level: google "python tutorial" and read up on "loops"user2665694– user26656942011年04月05日 03:14:05 +00:00Commented Apr 5, 2011 at 3:14
-
Possible duplicate of Asking the user for input until they give a valid responseruohola– ruohola2019年05月04日 14:20:33 +00:00Commented May 4, 2019 at 14:20
5 Answers 5
I would do it with a while loop. Like This:
while True:
com = raw_input('Command:').split()
if len(com) == 0:
break
elif com[0] == 'i':
bike_name = command[1] + ' ' + command[2]
return get_product_id(products, bike_name)
Comments
You've done most of the work, you just need this:
while True:
print interact()
Comments
One way is to put it in a while loop, and then also check for an exit input to break out.
Comments
There is no need to take so much pain and write your own command line interpreter. Look at this: http://docs.python.org/2/library/cmd.html
Comments
Call the method inside an (end-less) loop:
while True:
some_method()