python 数字进制转化打印,求解答。
输入数字,然后分别打印,转化为十六进制,八进制和二进制答案的代码写得很简单,但我不太懂,用了个笨方法,得出同样结果,不知道对不对:
q=True
num1=0
num2=0
num3=0
while q:
num=input("请输入一个整数:(输入Q结束程序)")
if num!="Q":
num=int(num)
num1= '0x%x'%num
num2='0o%o'%num
num3=bin(num)
print("十进制 -> 十六进制 : "+str(num)+" ->"+str(num1))
print("十进制 -> 八进制 : "+str(num)+" ->"+str(num2))
print("十进制 -> 八进制 : "+str(num)+" ->"+str(num3))
else:
q=False
附答案方法:
1. q = True
2. while q:
3. num = input('请输入一个整数(输入Q结束程序):')
4. if num != 'Q':
5. num = int(num)
6. print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
7. print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
8. print('十进制 -> 二进制 : %d -> ' % num, bin(num))
9. else:
10. q = False
本帖最后由 昨非 于 2020-11-23 17:16 编辑
是正确的,但是没必要这样写
首先:
num1=0
num2=0
num3=0这些初值不写也是没有影响的,当然写上不错
其次:
print函数中,整型数和字符串的打印是看不出区别的,所以大可不必str转成字符串
最后:print函数的格式串是支持多个%占位符的,而且不论是哪种进制表示,他们的值都是相等的
只要格式控制串不同,后面()里的变量本质上都是num,所以从这里看,你的num1、2、3都有些多余的
print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
#就像这里的%d和%x
所以也不必将%d(num)和%x(num1)分开来 num1、num2、num3 已经是 str 了所以,后面不需要再用 str() 转换,可以直接和其他字符串相加,所以,下面的代码:
print("十进制 -> 十六进制 : "+str(num)+" ->"+str(num1))
print("十进制 -> 八进制 : "+str(num)+" ->"+str(num2))
print("十进制 -> 八进制 : "+str(num)+" ->"+str(num3))
应该改为
print("十进制 -> 十六进制 : "+str(num)+" ->" + num1)
print("十进制 -> 八进制 : "+str(num)+" ->" + num2))
print("十进制 -> 八进制 : "+str(num)+" ->" + num3) 昨非 发表于 2020-11-23 17:13
是正确的,但是没必要这样写
首先:
这些初值不写也是没有影响的,当然写上不错
感谢赐教!{:10_254:} jackz007 发表于 2020-11-23 17:17
num1、num2、num3 已经是 str 了所以,后面不需要再用 str() 转换,可以直接和其他字符串相加,所 ...
明白了,感谢赐教!{:10_254:} Tinky77 发表于 2020-11-23 17:27
感谢赐教!
满意的话记得设为最佳答案哈{:10_297:}
页:
[1]