鱼C论坛

 找回密码
 立即注册
查看: 1156|回复: 5

[已解决]python 数字进制转化打印,求解答。

[复制链接]
发表于 2020-11-23 17:05:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入数字,然后分别打印,转化为十六进制,八进制和二进制
答案的代码写得很简单,但我不太懂,用了个笨方法,得出同样结果,不知道对不对:
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:17:14
        num1、num2、num3 已经是 str 了所以,后面不需要再用 str() 转换,可以直接和其他字符串相加,所以,下面的代码:
  1.         print("十进制 -> 十六进制 : "+str(num)+" ->"+str(num1))
  2.         print("十进制 -> 八进制 : "+str(num)+" ->"+str(num2))
  3.         print("十进制 -> 八进制 : "+str(num)+" ->"+str(num3))
复制代码

        应该改为
  1.         print("十进制 -> 十六进制 : "+str(num)+" ->" + num1)
  2.         print("十进制 -> 八进制 : "+str(num)+" ->" + num2))
  3.         print("十进制 -> 八进制 : "+str(num)+" ->" + num3)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-23 17:13:31 | 显示全部楼层
本帖最后由 昨非 于 2020-11-23 17:16 编辑

是正确的,但是没必要这样写
首先:

  1. num1=0
  2. num2=0
  3. num3=0
复制代码
这些初值不写也是没有影响的,当然写上不错

其次:
print函数中,整型数和字符串的打印是看不出区别的,所以大可不必str转成字符串

最后:print函数的格式串是支持多个%占位符的,而且不论是哪种进制表示,他们的值都是相等的
只要格式控制串不同,后面()里的变量本质上都是num,所以从这里看,你的num1、2、3都有些多余的

  1. print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
  2. #就像这里的%d和%x
复制代码

所以也不必将%d(num)和%x(num1)分开来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 17:17:14 | 显示全部楼层    本楼为最佳答案   
        num1、num2、num3 已经是 str 了所以,后面不需要再用 str() 转换,可以直接和其他字符串相加,所以,下面的代码:
  1.         print("十进制 -> 十六进制 : "+str(num)+" ->"+str(num1))
  2.         print("十进制 -> 八进制 : "+str(num)+" ->"+str(num2))
  3.         print("十进制 -> 八进制 : "+str(num)+" ->"+str(num3))
复制代码

        应该改为
  1.         print("十进制 -> 十六进制 : "+str(num)+" ->" + num1)
  2.         print("十进制 -> 八进制 : "+str(num)+" ->" + num2))
  3.         print("十进制 -> 八进制 : "+str(num)+" ->" + num3)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 17:27:36 | 显示全部楼层
昨非 发表于 2020-11-23 17:13
是正确的,但是没必要这样写
首先:
这些初值不写也是没有影响的,当然写上不错

感谢赐教!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

明白了,感谢赐教!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-23 17:28:36 | 显示全部楼层

满意的话记得设为最佳答案哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 22:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表