题目如下:
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
方法1:如下:
print(int(input(), 16))
0xA21
2593
方法2:
s = input()
0xA134
eval(s)
Out[14]: 41268
方法3:使用字典方式,把两者的关系一一对应起来
def get_sixteen():
s = input()
dict1 = {"0": 0,
"1": 1,
"2": 2,
"3": 3,
"4": 4,
"5": 5,
"6": 6,
"7": 7,
"8": 8,
"9": 9,
"A": 10,
"B":11,
"C": 12,
"D":13,
"E":14,
"F": 15}
#字典的用法,key是唯一的,因此可以使用key值获取到对应位置的值,找到两者的一一对应关系
result = 0
for i in range(2, len(s)):
result = result * 16 + dict1[s[i]] * 16#dict[key] - >key = s[i]组合起来就是dict[key[i]]
print(result)
get_sixteen()
机试正确的方法:
以上三种方法都可以解决上述的问题
但是在正常的通过的代码中,加了捕捉异常处理,如下,以上所有的代码都可以放在try里面
while True:
try:
n = "0xAB128"
s = eval(n)
print(str(s))
except:
break
while True:
try:
print(int(input(), 16))
except:
break