检查列表中的值是否为整数

时间:2018-11-01 15:13:16

标签: types int python-3.6

我正在尝试制作一个十六进制到十进制的计算器,并且试图检查输入是否具有整数或字符。

我该怎么做?

def hex2dec(value):
    dict = {'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
    strVal = str(value)
    length = len(strVal)
    decimal = 0
    for i in range(0,length):
        try:
            int(strval[i:i+1])
            val = "int"
        except ValueError:
            val = "not int"

    return val

value = int(input("Enter Hexadecimal Value: "),16)
print("Value in Hexadecimal : ", hex2dec(value))

只要我运行代码并输入从A到F的任何一位数字或字母,它就会返回int

有人知道解决方案吗?

3 个答案:

答案 0 :(得分:1)

此行

value = int(input("Enter Hexadecimal Value: "),16)

您已经将提供的值转换为整数。

如果您想自己执行转换,请首先接受它们作为字符串输入的内容(在上面的语句中删除int()的使用。)

还请注意,提交"12"是有效的十六进制值,十进制值为18

答案 1 :(得分:0)

您总是得到"int",因为该函数始终被{em>调用并带有int。由于value行中的int(..),变量input被转换为整数。

如果要先检查,请将原始的 string 输入输入到函数中:

value = input("Enter Hexadecimal Value: ")

您无需一次检查一个字符,这也可以:

try:
    int(strVal)
    val = "int"
except ValueError:
    val = "not int"

请注意,没有充分的理由签入您的功能!即使您貌似输入整数(123-,也必须仍将其作为十六进制数字进行处理。此时,检查它是否也是整数也没有用。

答案 2 :(得分:0)

扩展先前的答案,您可以这样做:

if (strval[i:i+1] in dict.keys()) or (type(strval[i:i+1]) == int):
    val = 'int'
else
    'val = 'not int'

为了检查该值是int还是在您的字典中(另外,您会得到一些扩展。)