Python只有在范围内时才输入输出

hem*_*mmy 4 python error-handling user-input

嗨,我想从用户那里得到一个号码,只是在一定范围内输入.

下面似乎工作,但我是一个菜鸟和思想,虽然它的工作,毫无疑问是一个更优雅的例子...只是努力不陷入坏习惯!

我注意到的一件事是当我运行程序时,CTL + C不会让我脱离循环并引发异常.

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")
Run Code Online (Sandbox Code Playgroud)

所有帮助非常感谢.

dav*_*v1d 6

Ctrl + C引发a KeyboardInterruptException,你的try … except块捕获了这个:

while True:
   try:
       input = int(raw_input('Pick a number in range 1-10 >>> '))
   except ValueError: # just catch the exceptions you know!
       print 'That\'s not a number!'
   else:
       if 1 <= input < 10: # this is faster
           break
       else:
           print 'Out of range. Try again'
Run Code Online (Sandbox Code Playgroud)

通常,您应该捕获预期发生的异常(因此不会出现副作用,例如您的Ctrl + C问题).你也应该尽量try … except缩短块.