Python input validation: how to limit user input t

2019-04-17 11:01发布

Beginner here, looking for info on input validation.

I want the user to input two values, one has to be an integer greater than zero, the next an integer between 1-10. I've seen a lot of input validation functions that seem over complicated for these two simple cases, can anyone help?

For the first number (integer greater than 0, I have):

while True:
    try:
        number1 = int(input('Number1: '))
    except ValueError:
        print("Not an integer! Please enter an integer.")
        continue
    else:
        break

This also doesn't check if it's positive, which I would like it to do. And I haven't got anything for the second one yet. Any help appreciated!

3条回答
Bombasti
2楼-- · 2019-04-17 11:18

Use assert:

while True:
    try:
        number1 = int(input('Number1: '))
        assert 0 < number1 < 10
    except ValueError:
        print("Not an integer! Please enter an integer.")
    except AssertionError:
        print("Please enter an integer between 1 and 10")
    else:
        break
查看更多
萌系小妹纸
3楼-- · 2019-04-17 11:26
class CustomError(Exception):
   pass

while True:
    try:
       number1 = int(raw_input('Number1: '))
       if number1 not in range(0,9):
         raise CustomError
    break
except ValueError:
    print("Numbers only!")
except CustomError:
    print("Enter a number between 1-10!)
查看更多
smile是对你的礼貌
4楼-- · 2019-04-17 11:27

You could add in a simple if statement and raise an Error if the number isn't within the range you're expecting

while True:
    try:
        number1 = int(input('Number1: '))
        if number1 < 1 or number1 > 10:
            raise ValueError #this will send it to the print message and back to the input option
        break
    except ValueError:
        print("Invalid integer. The number must be in the range of 1-10.")
查看更多
登录 后发表回答