How do I set a value to only accept certain data in Python? Like I am making a code for a colour identifier. I want my variable to only accept up to FFFFFF any nothing greater than that. The base-16 characters pretty much...hex code.
The reason I am trying to do this is because if a user enters in a value like GGGGGG it will give them a Script Error, which actually makes me look incompetent (which I might be, but I do not want to look like I am). And also, if they enter in special characters like F1F2G% it will mess up too. In addition, if they leave the box blank, it also gives a Script Error.
I want to avoid those errors. Does anyone know of a good way?
-
How are you accepting input currently? What are you doing to validate your input currently?sarnold– sarnold2012年06月15日 01:12:52 +00:00Commented Jun 15, 2012 at 1:12
-
Can you use a try/catch block?jgritty– jgritty2012年06月15日 01:13:22 +00:00Commented Jun 15, 2012 at 1:13
-
Is the input a character string?Levon– Levon2012年06月15日 01:14:11 +00:00Commented Jun 15, 2012 at 1:14
-
I am freely accepting input right now. If a user enters something, either it is the right information, or the Script just crashes. That is what I am trying to fix now. The one and only limiter is this: colour = form["colour"].valueAj Entity– Aj Entity2012年06月15日 01:33:55 +00:00Commented Jun 15, 2012 at 1:33
3 Answers 3
try:
val = int(hex_val, 16)
except ValueError:
# Not a valid hex value
if val > int("FFFFFF", 16):
# Value is too large
9 Comments
val >=0#Not a valid hex value and # Value is too large are for you to take some sort of action. You need to put code in there, but that code depends on how you want to handle the error.You can also use the regex facility in re.
val = val.upper()
seeker = re.compile("^[0-9A-F]{1,6}$")
if seeker.search(val):
hexCode = int(val, 16)
# process a good value
else:
#bail
1 Comment
This is one approach assuming the input is a string:
import string
def check_HEX(input):
for l in input:
if l not in string.hexdigits:
return False
return True
gives:
print check_HEX('FFFFFF') # True
print check_HEX('FFFZFF') # False
print check_HEX(' ') # False
print check_HEX('F1F2G%') # False