2

如何设置一个值以仅接受 Python 中的某些数据?就像我正在为颜色标识符制作代码一样。我希望我的变量最多只能接受FFFFFF任何大于此的值。base-16 字符几乎... hex code

我试图这样做的原因是因为如果用户输入一个类似的值GGGGGG会给他们一个Script Error,这实际上让我看起来无能(我可能是,但我不想看起来像我)。而且,如果他们输入像 F1F2G% 这样的特殊字符,它也会搞砸。此外,如果他们将该框留空,也会给出脚本错误。

我想避免这些错误。有谁知道一个好方法吗?

4

3 回答 3

11
try:
    val = int(hex_val, 16)
except ValueError:
    # Not a valid hex value

if val > int("FFFFFF", 16):
    # Value is too large
于 2012-06-15T01:15:20.687 回答
1

这是假设输入是字符串的一种方法:

import string

def check_HEX(input):
    for l in input:
        if l not in string.hexdigits:
            return False
    return True

给出:

print check_HEX('FFFFFF') # True
print check_HEX('FFFZFF') # False
print check_HEX(' ')      # False
print check_HEX('F1F2G%') # False
于 2012-06-15T01:17:30.900 回答
1

您还可以使用 re.reg 中的正则表达式工具。

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
于 2012-06-15T01:27:31.227 回答