Python编写简易进制转换器运行后无返回结果该如何解决
问题排查与修复
错误原因
- 缺失待转换数字的获取与解析逻辑:代码中没有定义
numberToConvert变量,也没有将用户输入的字符串形式的带前缀数字(如0xCAFE)转换为Python可处理的整数对象,程序运行会直接触发NameError中断执行 - 变量类型不匹配:你将目标进制输入通过
int()转为了整数类型,但判断分支中是和字符串类型的"10"/"2"/"16"做等值判断,两类数据永远不相等,所有逻辑分支都无法触发,因此没有输出 - 内置方法返回值默认带前缀:
bin()、hex()返回的结果会自带0b、0x前缀,如果你不需要前缀还要额外做切片处理
修复后代码
# 获取待转换数字,base=0支持自动识别带0x/0b/0o前缀的数字 number_input = input("请输入待转换的数字:") numberToConvert = int(number_input, 0) toConvertBase = int(input("Base wanted? ")) if toConvertBase == 10: print(numberToConvert) elif toConvertBase == 2: # 切片[2:]去掉返回结果的0b前缀 print(bin(numberToConvert)[2:]) elif toConvertBase == 16: # 切片[2:]去掉返回结果的0x前缀,upper()转为大写字母 print(hex(numberToConvert)[2:].upper()) else: print("暂不支持该进制转换")
测试验证
输入待转换数字0xCAFE、目标进制10,程序会输出51966;输入0x10C转10时输出268,完全符合需求。
内容的提问来源于stack exchange,提问作者vortex59
相关产品推荐
相关产品推荐

