编写函数该函数能完成任意的十进制数x转换为R2≤R≤16进制数。调用该函数将输入的一个十进制正整数分别转换为R进制数数字串。要求:1在主函数中需要用循环完成多次转换输入的x或R为负数时应提示重新输入;输入的十进制数为0时停止转换。 2在主函数中输出转换结果。 3测试结果应该能够反映R=2、R=8、R=16和x=0的情况。
示例代码如下:
def dec2base(x, R):
# 判断输入是否合法
if x < 0 or R < 2 or R > 16:
print("输入不合法,请重新输入。")
return ""
# 定义数字和字母对应关系
digits = "0123456789ABCDEF"
# 初始化结果字符串
result = ""
# 不断取余,直到商为0
while x > 0:
remainder = x % R
result = digits[remainder] + result
x //= R
return result
# 主函数
while True:
x = int(input("请输入一个十进制正整数:"))
if x == 0:
print("程序结束。")
break
R = int(input("请输入要转换的进制数(2-16):"))
result = dec2base(x, R)
print("{}的{}进制数为{}".format(x, R, result))
示例输出:
请输入一个十进制正整数:1024
请输入要转换的进制数(2-16):2
1024的2进制数为10000000000
请输入一个十进制正整数:1024
请输入要转换的进制数(2-16):8
1024的8进制数为2000
请输入一个十进制正整数:1024
请输入要转换的进制数(2-16):16
1024的16进制数为400
请输入一个十进制正整数:0
程序结束。
原文地址: https://www.cveoy.top/t/topic/bYVa 著作权归作者所有。请勿转载和采集!