1 regex (inspired by Maarten Fabre)
import re
while True:
try:
shoot = raw_input("Enter today shoot number > ")
shootnum = int(shoot)
if not re.match(r'\d{3}$', shoot):
raise ValueError
print shootnum
except ValueError:
print("Invalid number, please try again.")
2 just check if the arrow is a three-digit number
while True:
try:
shoot = raw_input("Enter today shoot number > ")
shootnum = int(shoot)
if len(shoot) != 3 or shoot[0] == '-':
raise ValueError
print shootnum
except ValueError:
print("Invalid number, please try again.")
results below
Enter today shoot number > qwer
Invalid number, please try again.
Enter today shoot number > -12
Invalid number, please try again.
Enter today shoot number > 123
123
Enter today shoot number > 1222
Invalid number, please try again.
Enter today shoot number > 012
12
Enter today shoot number > 0122
Invalid number, please try again.
Enter today shoot number > 0
Invalid number, please try again.
Enter today shoot number > 00
Invalid number, please try again.
Enter today shoot number > 000
0
Enter today shoot number > 0000
Invalid number, please try again.
source
share