鱼C论坛

 找回密码
 立即注册
查看: 2991|回复: 12

[已解决]第015讲:字符串:格式化 动动手 代码问题

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

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

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

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


  1. '十进制 -> 十六进制 : %d -> 0x%x' % (num, num)
复制代码

这里面的 (num, num)  是什么意思?
为什么要这么写不能写成
  1. '十进制 -> 十六进制 : %d -> 0x%x' % num)
复制代码

最佳答案
2020-8-9 09:47:20
两个 num 分别填充字符串中的 %d 和 %x 占位符,不能只写一个
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-9 09:47:20 | 显示全部楼层    本楼为最佳答案   
两个 num 分别填充字符串中的 %d 和 %x 占位符,不能只写一个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 09:48:18 | 显示全部楼层
格式化需要多个参数时必须加括号。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 09:50:24 | 显示全部楼层
zltzlt 发表于 2020-8-9 09:47
两个 num 分别填充字符串中的 %d 和 %x 占位符,不能只写一个

哦,是不是这个意思

'十进制 -> 十六进制 : %d -> 0x%x' % num
只是%d的
因为'十进制 -> 十六进制 : %d -> 0x%x' % num里面有 两个一个是%d 一个是%x
所以后面要给两个参数(num,num) 分别是%d 和%x 的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 09:54:40 | 显示全部楼层
blackfame 发表于 2020-8-9 09:50
哦,是不是这个意思

'十进制 -> 十六进制 : %d -> 0x%x' % num

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 09:56:11 | 显示全部楼层
blackfame 发表于 2020-8-9 09:50
哦,是不是这个意思

'十进制 -> 十六进制 : %d -> 0x%x' % num

是的。

但是用 % 来格式化的方法早就不用了,现在推荐使用 format 和 f-string
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 10:56:24 | 显示全部楼层
想问一下...0 x% x  这里面的0x是做什么的??有什么用吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 11:29:23 | 显示全部楼层
极品召唤兽 发表于 2020-8-9 10:56
想问一下...0 x% x  这里面的0x是做什么的??有什么用吗

0x  小甲鱼视频里有啊,就是说是 16进制的,0o是8进制的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 11:30:53 | 显示全部楼层
blackfame 发表于 2020-8-9 11:29
0x  小甲鱼视频里有啊,就是说是 16进制的,0o是8进制的

就是..那个只是一个提示作用 还是有其他作用?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 11:36:17 | 显示全部楼层
极品召唤兽 发表于 2020-8-9 11:30
就是..那个只是一个提示作用 还是有其他作用?

格式化操作符辅助命令 #在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'的意思一样

我觉得写成这样也行:
  1. q = True
  2. while q:
  3.     num = input('请输入一个整数(输入Q结束程序):')
  4.     if num != 'Q':
  5.         num = int(num)
  6.         print('十进制 -> 十六进制 : %d -> %#x' % (num, num))
  7.         print('十进制 -> 八进制 : %d -> %#o' % (num, num))
  8.         print('十进制 -> 二进制 : %d -> ' % num, bin(num))
  9.     else:
  10.         q = False
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 11:45:57 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-8-9 09:56
是的。

但是用 % 来格式化的方法早就不用了,现在推荐使用 format 和 f-string

慢慢来,我还在做课后作业阶段,按照小甲鱼的课后题要求写。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 12:08:28 | 显示全部楼层
blackfame 发表于 2020-8-9 11:36
格式化操作符辅助命令 #在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'的意思一样

我觉 ...

额..为什么转换二进制的时候用的bin()??
咋不是0d了呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-18 23:46:48 | 显示全部楼层
我觉得答案不够完美,输入的不是整数或是Q的话,就直接退出了,没有提示。我是这样写的
  1. while 1:
  2.     a = input('请输入一个整数(输入Q结束程序):')
  3.     if  not (a.isdecimal() or a=="Q"):
  4.         print("您的输入有误,请重新输入!")
  5.         continue
  6.     elif a == 'Q':
  7.         print("程序结束")
  8.         break
  9.     else:
  10.         b="%#x" % int(a)
  11.         c="%#o" % int(a)
  12.         d=bin(int(a))
  13.         print("十进制->十六进制:",a,"->",b)
  14.         print("十进制->八进制:",a,"->",c)
  15.         print("十进制->二进制",a,"->",d)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 19:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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