题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
import sys
while True:
try:
dic1 = {'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
num16 = input() ### 16进制数输入,注意格式:‘0x’或‘0X’开头,否则输入错误
num16 = num16.upper() ### 输入小写字母变大写字母
num10 = 0
if not num16.startswith('0X'): ### 检验是否16进制格式输入
print('输入的不是16进制数')
sys.exit()
for i in range(2,len(num16)): ### 不考虑‘0X’
if num16[i].isdecimal(): ### 数字字符转化成整型
num10 += (16**(len(num16)-i-1)) * int(num16[i])
elif num16[i].isalpha(): ### 字母字符根据字典转成整型数
if num16[i] <= 'F': ### 字母ASCII码超过‘F’,显示输入错误
num10 += (16**(len(num16)-i-1)) * dic1[num16[i]]
else:
print('输入错误')
sys.exit()
else: ### 输入16进制数须为字母符号与数字符号,其他形式输入显示输入错误
print('输入错误')
sys.exit()
if (num10 > (2**31 - 1)) or (num10 < 1): ### 要求符合题目输出范围
print('输入不在范围内')
else:
print(num10)
except:
sys.exit()
网易游戏公司福利 651人发布