Question: Hi I want to get a number from user and only except input within a certain range.

The below appears to work but I am a noob and thought whilst it works there is no doubt a more elegant example... just trying not to fall into bad habits!

One thing I have noticed is when I run the program CTL+C will not break me out of the loop and raises the exception instead. 

```
while True:
  try:
    input = int(raw_input('Pick a number in range 1-10 >>> '))
    # Check if input is in range
    if input in range(1,10):
      break
    else:
      print 'Out of range. Try again'
  except:
    print ("That's not a number")

```

All help greatly appreciated.

Answer: 
There are several items in your code that could be improved.

(1) Most importantly, it's not a good idea to just catch a generic exception, you should catch a *specific* one you are looking for, and generally have as short of a `try`-block as you can.

(2) Also,

```
  if input in range(1,10):

```

would better be coded as

```
  if 1 <= input < 10:

```

as currently function [range()](http://docs.python.org/library/functions.html#range) repeatedly creates a list of values form 1 to **9**, which is probably not what you want or need. Also, do you want to ***include*** value **10**? Your prompt seems to imply that, so then you need to adjust your call to `range(1, 11)`, as the list generated will *not* include the upper-range value. and the `if`-statement should be changed to `if 1 <= input <= 10:`
You can use this code:

```
def read_int(prompt, min, max):
    while True:
        try:
            val = int(input(prompt))
        except ValueError:
            print('Error: wrong input')
        else:
            if(min <= val < max): # this is faster
                break
            else:
                print('Error: the value is not within permitted range (min..max)')
    return val    

v = read_int("Enter a number from -10 to 10: ", -10, 10)

print("The number is:", v)

```