Reputation: 4891
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?
Upvotes: 2
Views: 544
Reputation: 143022
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
Upvotes: 1
Reputation: 4891
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
Upvotes: 1
Reputation: 526603
try:
val = int(hex_val, 16)
except ValueError:
# Not a valid hex value
if val > int("FFFFFF", 16):
# Value is too large
Upvotes: 11