鱼C论坛

 找回密码
 立即注册
查看: 1110|回复: 14

[已解决]格式化作业问题

[复制链接]
发表于 2020-8-31 22:40:22 | 显示全部楼层 |阅读模式

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

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

x
  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
复制代码

请问第 6\7行的0o 和 0x有什么意义
另外运行二进制的时候 显示的结果前会有一个0b是为什么 如:8-> 0b1000
最佳答案
2020-8-31 23:08:17
本帖最后由 疾风怪盗 于 2020-8-31 23:09 编辑
十泉浩 发表于 2020-8-31 23:07
那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余


二进制那个不能去掉的吧,bin()生成的,要去掉就切片bin(num)[2:]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-31 22:40:55 | 显示全部楼层
第6行0x   第七行0o
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 22:47:06 | 显示全部楼层
分别是十六进制和八进制的表示方法,固定的,相当于是个符号

比如十六进制0x12其实就是十进制18
八进制0o15 其实是十进制13
二进制0b10其实就是十进制2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-31 22:48:05 | 显示全部楼层
本帖最后由 昨非 于 2020-8-31 22:51 编辑
十泉浩 发表于 2020-8-31 22:40
第6行0x   第七行0o


只是一种表示方法而已,在这个两个符号【前缀】后面的数可以按进制随意转换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 22:48:58 | 显示全部楼层
以0x开始的数据表示16进制
一些编程语言中常常以数字0开始表明该数字是八进制
应该是这个意思吧
不影响运算,仅仅是作为标记
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 22:49:18 | 显示全部楼层
出现在上述代码里,其实是以字符串的形式在转换后的各进制数前加了两个字符而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-8-31 23:05:51 | 显示全部楼层
谢谢楼上两位大神回答,那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 23:06:33 | 显示全部楼层
昨非 发表于 2020-8-31 22:47
分别是十六进制和八进制的表示方法,固定的,相当于是个符号

比如十六进制0x12其实就是十进制18

那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 23:07:03 | 显示全部楼层
疾风怪盗 发表于 2020-8-31 22:48
以0x开始的数据表示16进制
一些编程语言中常常以数字0开始表明该数字是八进制
应该是这个意思吧

那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 23:08:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 疾风怪盗 于 2020-8-31 23:09 编辑
十泉浩 发表于 2020-8-31 23:07
那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余


二进制那个不能去掉的吧,bin()生成的,要去掉就切片bin(num)[2:]

评分

参与人数 1荣誉 +1 收起 理由
十泉浩 + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-31 23:09:03 | 显示全部楼层
十泉浩 发表于 2020-8-31 23:06
那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余

这是一种习惯,(建议保留)不想要的话就不能调用bin()函数了,而是要用类似前两种的方法

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
十泉浩 + 1 + 1 非常感谢大佬的回答!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-31 23:12:54 | 显示全部楼层
十泉浩 发表于 2020-8-31 23:07
那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余

没事,我刚刚试了,确实不行,就切片处理吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-31 23:13:28 | 显示全部楼层
昨非 发表于 2020-8-31 23:12
没事,我刚刚试了,确实不行,就切片处理吧

√,切片这种骚操作确实没想到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-31 23:14:32 | 显示全部楼层
十泉浩 发表于 2020-8-31 23:13
√,切片这种骚操作确实没想到

其实真的没必要,那是国际标准格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-8-31 23:19:32 | 显示全部楼层
昨非 发表于 2020-8-31 23:14
其实真的没必要,那是国际标准格式

哦哦好的,本小白还不太适应~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 00:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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