我需要写一个函数,把十六进制转换成十进制,我知道怎么做,但我困在第一位。到目前为止,我接受用户输入并以十六进制返回它,但这只在我一次输入一个东西时有效。代码是:
def hex(x):
if x == "0":
return 0
elif x == "1":
return 1
elif x == "2":
return 2
elif x == "3":
return 3
elif x == "4":
return 4
elif x == "5":
return 5
elif x == "6":
return 6
elif x == "7":
return 7
elif x == "8":
return 8
elif x == "9":
return 9
elif x == "A":
return 10
elif x == "B":
return 11
elif x == "C":
return 12
elif x == "D":
return 13
elif x == "E":
return 14
elif x == "F":
return 15
print hex(raw_input().upper())
如果我输入,例如,C,它返回12,但是如果我输入8C,它就不工作。我不明白这是为什么。
您可以使用
int
来简化这个过程。功能:示例:
如果int有一个
0x
前额,它将忽略字符串中的0x
。因此,以下方法也将起作用:对于从头开始的原始十六进制代码,请尝试以下操作:
如果你想派警卫进去:
我在这里使用了很多函数,但是为了快速参考,这里有一个附录:
至于
[...]
,它是一个列表理解,您可以在上面找到大量的资源。目前,您正在将用户输入的整个字符串传递给十六进制函数。因此,它适用于“C”,但不适用于“8C”。你没有检查if语句中的'8C'。 因此,十六进制函数返回值为
None
。 为了防止这种情况发生,您需要将用户输入的字符串一次传递给十六进制函数一个字符。假设:
使用问题中定义的
hex()
函数。 你可以:或者如果你不想要名单:
这将使用您定义的函数,但将其应用于用户输入的所有字符。。。而不是第一个。
这个答案的工作原理是假设您对定义的
hex()
函数的当前功能和返回类型感到满意。相关问题 更多 >
编程相关推荐