Tinky77 发表于 2020-11-23 17:05:39

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:13:31

本帖最后由 昨非 于 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)分开来

jackz007 发表于 2020-11-23 17:17:14

      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)

Tinky77 发表于 2020-11-23 17:27:36

昨非 发表于 2020-11-23 17:13
是正确的,但是没必要这样写
首先:
这些初值不写也是没有影响的,当然写上不错


感谢赐教!{:10_254:}

Tinky77 发表于 2020-11-23 17:28:17

jackz007 发表于 2020-11-23 17:17
num1、num2、num3 已经是 str 了所以,后面不需要再用 str() 转换,可以直接和其他字符串相加,所 ...

明白了,感谢赐教!{:10_254:}

昨非 发表于 2020-11-23 17:28:36

Tinky77 发表于 2020-11-23 17:27
感谢赐教!

满意的话记得设为最佳答案哈{:10_297:}
页: [1]
查看完整版本: python 数字进制转化打印,求解答。