十泉浩 发表于 2020-8-31 22:40:22

格式化作业问题

q = True
while q:
    num = input('请输入一个整数(输入Q结束程序):')
    if num != 'Q':
      num = int(num)
      print('十进制 -> 十六进制 : %d -> 0x%x' % (num, num))
      print('十进制 -> 八进制 : %d -> 0o%o' % (num, num))
      print('十进制 -> 二进制 : %d -> ' % num, bin(num))
    else:
      q = False

请问第 6\7行的0o 和 0x有什么意义
另外运行二进制的时候 显示的结果前会有一个0b是为什么 如:8-> 0b1000

十泉浩 发表于 2020-8-31 22:40:55

第6行0x   第七行0o{:10_266:}

昨非 发表于 2020-8-31 22:47:06

分别是十六进制和八进制的表示方法,固定的,相当于是个符号

比如十六进制0x12其实就是十进制18
八进制0o15 其实是十进制13
二进制0b10其实就是十进制2

昨非 发表于 2020-8-31 22:48:05

本帖最后由 昨非 于 2020-8-31 22:51 编辑

十泉浩 发表于 2020-8-31 22:40
第6行0x   第七行0o

只是一种表示方法而已,在这个两个符号【前缀】后面的数可以按进制随意转换

疾风怪盗 发表于 2020-8-31 22:48:58

以0x开始的数据表示16进制
一些编程语言中常常以数字0开始表明该数字是八进制
应该是这个意思吧
不影响运算,仅仅是作为标记

昨非 发表于 2020-8-31 22:49:18

出现在上述代码里,其实是以字符串的形式在转换后的各进制数前加了两个字符而已

十泉浩 发表于 2020-8-31 23:05:51

谢谢楼上两位大神回答,那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余

十泉浩 发表于 2020-8-31 23:06:33

昨非 发表于 2020-8-31 22:47
分别是十六进制和八进制的表示方法,固定的,相当于是个符号

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


那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余

十泉浩 发表于 2020-8-31 23:07:03

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


那二进制的那个0b可以有什么方式去掉呢?总感觉多了两个字符串比较多余

疾风怪盗 发表于 2020-8-31 23:08:17

本帖最后由 疾风怪盗 于 2020-8-31 23:09 编辑

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

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

昨非 发表于 2020-8-31 23:09:03

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

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

昨非 发表于 2020-8-31 23:12:54

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

没事,我刚刚试了,确实不行,就切片处理吧

十泉浩 发表于 2020-8-31 23:13:28

昨非 发表于 2020-8-31 23:12
没事,我刚刚试了,确实不行,就切片处理吧

√,切片这种骚操作确实没想到

昨非 发表于 2020-8-31 23:14:32

十泉浩 发表于 2020-8-31 23:13
√,切片这种骚操作确实没想到

其实真的没必要,那是国际标准格式{:10_277:}

十泉浩 发表于 2020-8-31 23:19:32

昨非 发表于 2020-8-31 23:14
其实真的没必要,那是国际标准格式

哦哦好的,本小白还不太适应~~
页: [1]
查看完整版本: 格式化作业问题