On 11/03/15 21:26, Wibble wrote:

def user_choice(question, low, high, step = 1):
     """Define user choice"""
     choice = None
     while choice not in range(low, high, step):
         choice = int(input(question))
     return choice

If user enters a string rather than a number it creates this error

Traceback (most recent call last):...
     choice = int(input(question))
ValueError: invalid literal for int() with base 10: 'd'

How do I make it show a message to users saying only numbers excepted
and then the loop continues?

Use a try/except construct inside your while loop.
Something like (untested):

def user_choice(question, low, high, step = 1):
    """Define user choice"""
    choice = None
    while choice not in range(low, high, step):
       try:
          choice = int(input(question))
       except ValueError:
          print("You must enter a number between ",low," and ", high)
    return choice

HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to