Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types 检查列表中的值是否为整数_Types_Int_Python 3.6 - Fatal编程技术网

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

Types 检查列表中的值是否为整数,types,int,python-3.6,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(s

我正在尝试制作一个十六进制到十进制的计算器,我正在尝试检查输入是整数还是字符

我怎样才能做到这一点

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

有人知道这个问题的解决方法吗?

用这句话

value = int(input("Enter Hexadecimal Value: "),16)
您已经将提供的值转换为整数

如果您想自己执行转换,首先接受他们输入的字符串(在上述语句中不要使用
int()

还请注意,提交的
“12”
是一个有效的十六进制值,十进制值为
18
,您总是会得到
“int”
,因为函数总是用
int
调用。变量
被转换为整数,因为
输入
行中的
int(..)

如果要先检查,请将原始字符串输入馈送到函数中:

value = input("Enter Hexadecimal Value: ")
您不需要一次检查一个字符,这也可以:

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

请注意,没有很好的理由签入您的函数!即使您似乎输入了一个整数--
123
,也必须将其作为十六进制数处理。检查它是否也是一个整数在那一点上没有用。

扩展前面的答案,您可以执行以下操作:

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

为了检查值是int还是dict中的值(另外,您还可以获得一些扩展性)

只是为了好玩(没有答案):尝试打印(“十进制值:”,value)。(当然,假设提示是错误的。)@usr2564301是的,但我不想使用内置函数进行转换,我正在尝试将我自己的“是”设置为“坏”。当我搜索以前的问题时,我遇到一篇帖子,提到在输入中输入基数16,以允许十六进制值进行int转换。是的,它可以工作,感谢您指出我将输入转换为int的错误