我正在尝试制作一个十六进制到十进制的计算器,并且试图检查输入是否具有整数或字符。
我该怎么做?
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
。
有人知道解决方案吗?
答案 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
还是在您的字典中(另外,您会得到一些扩展。)