鱼C论坛

 找回密码
 立即注册
查看: 1831|回复: 11

[已解决]引号里的%d为什么不直接打印出来,居然是变量

[复制链接]
发表于 2020-5-23 19:29:10 | 显示全部楼层 |阅读模式

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

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

x
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

print('十进制 -> 二进制 : %d ->' %num, bin(num))这个就看不懂了,前面两个都是(num, num),为啥到了二进制就变成num,bin(num),完全看不懂。请大神指教一下。为什么单引号的%d是变量呢,'十进制 -> 十六进制 : %d -> 0x%x' ,这个引号里面的内容应该是找本不变的打印出来的呀,为什么引号里的%d居然是变量。懵逼状态,麻烦大神好好解释一下,现在是糊涂状态
最佳答案
2020-5-23 22:09:16
批注 2020-05-23 215443.png
随便画了张图,将就看看,每行第一个mum以%d的格式输出,就是整数方式输出,这里就是输入什么数,输出什么数。
第1行第2个num以%x的格式输出,就是十六进制的样式输出;
第2行第2个num以%o的格式输出,就是八进制的样式输出;
第三行没有第二个格式化是因为字符串格式化中没有二进制的格式,就直接用了bin()函数去进行转换直接输出。
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-23 19:30:41 From FishC Mobile | 显示全部楼层
比如,%d是整型变量的占位符,是用变量值去填充的,其他同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 19:33:42 | 显示全部楼层
%s %d是格式化输出,百度一下吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 19:36:21 | 显示全部楼层
这是格式化输出,小甲鱼在课上讲过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 19:36:36 | 显示全部楼层
wp231957 发表于 2020-5-23 19:30
比如,%d是整型变量的占位符,是用变量值去填充的,其他同

print('十进制 -> 二进制 : %d ->' %num, bin(num))   
这个呢,占位符只有一个,但是后面变量有两个,这个没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 19:38:23 From FishC Mobile | 显示全部楼层
13272610508 发表于 2020-5-23 19:36
print('十进制 -> 二进制 : %d ->' %num, bin(num))   
这个呢,占位符只有一个,但是后面变量有两个, ...

错了吧,后面还应该有个%s的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 19:40:25 | 显示全部楼层
wp231957 发表于 2020-5-23 19:38
错了吧,后面还应该有个%s的

没错,我把这个运行,跑出来是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 19:42:22 From FishC Mobile | 显示全部楼层
13272610508 发表于 2020-5-23 19:40
没错,我把这个运行,跑出来是对的

哦,刚才没细看,后面的逗号那是print函数的连接字符串,和%占位没关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 22:09:16 | 显示全部楼层    本楼为最佳答案   
批注 2020-05-23 215443.png
随便画了张图,将就看看,每行第一个mum以%d的格式输出,就是整数方式输出,这里就是输入什么数,输出什么数。
第1行第2个num以%x的格式输出,就是十六进制的样式输出;
第2行第2个num以%o的格式输出,就是八进制的样式输出;
第三行没有第二个格式化是因为字符串格式化中没有二进制的格式,就直接用了bin()函数去进行转换直接输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 22:58:52 | 显示全部楼层
print('十进制 -> 二进制 : %d ->' %num, bin(num))
这句是把num格式化到字符串里,然后输出字符串
然后再把bin(num)单独输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 11:53:55 | 显示全部楼层
txxcat 发表于 2020-5-23 22:09
随便画了张图,将就看看,每行第一个mum以%d的格式输出,就是整数方式输出,这里就是输入什么数,输出什 ...

此楼正解,https://www.cnblogs.com/L521Z/p/11785348.html 字符串常用的格式化方法可以看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 21:03:50 | 显示全部楼层
13272610508 发表于 2020-5-23 19:36
print('十进制 -> 二进制 : %d ->' %num, bin(num))   
这个呢,占位符只有一个,但是后面变量有两个, ...

%对应的是%d,而后面的bin(num)是变量,所以可以直接输出,不用格式化,
相当于‘%num—〉’+bin(num)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 04:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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