13272610508 发表于 2020-5-23 19:29:10

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

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居然是变量。懵逼状态,麻烦大神好好解释一下,现在是糊涂状态

wp231957 发表于 2020-5-23 19:30:41

比如,%d是整型变量的占位符,是用变量值去填充的,其他同

青出于蓝 发表于 2020-5-23 19:33:42

%s %d是格式化输出,百度一下吧

qiuyouzhi 发表于 2020-5-23 19:36:21

这是格式化输出,小甲鱼在课上讲过

13272610508 发表于 2020-5-23 19:36:36

wp231957 发表于 2020-5-23 19:30
比如,%d是整型变量的占位符,是用变量值去填充的,其他同

print('十进制 -> 二进制 : %d ->' %num, bin(num))   
这个呢,占位符只有一个,但是后面变量有两个,这个没看懂

wp231957 发表于 2020-5-23 19:38:23

13272610508 发表于 2020-5-23 19:36
print('十进制 -> 二进制 : %d ->' %num, bin(num))   
这个呢,占位符只有一个,但是后面变量有两个, ...

错了吧,后面还应该有个%s的

13272610508 发表于 2020-5-23 19:40:25

wp231957 发表于 2020-5-23 19:38
错了吧,后面还应该有个%s的

没错,我把这个运行,跑出来是对的

wp231957 发表于 2020-5-23 19:42:22

13272610508 发表于 2020-5-23 19:40
没错,我把这个运行,跑出来是对的

哦,刚才没细看,后面的逗号那是print函数的连接字符串,和%占位没关系

txxcat 发表于 2020-5-23 22:09:16


随便画了张图,将就看看,每行第一个mum以%d的格式输出,就是整数方式输出,这里就是输入什么数,输出什么数。
第1行第2个num以%x的格式输出,就是十六进制的样式输出;
第2行第2个num以%o的格式输出,就是八进制的样式输出;
第三行没有第二个格式化是因为字符串格式化中没有二进制的格式,就直接用了bin()函数去进行转换直接输出。

_荟桐_ 发表于 2020-5-23 22:58:52

print('十进制 -> 二进制 : %d ->' %num, bin(num))
这句是把num格式化到字符串里,然后输出字符串
然后再把bin(num)单独输出

数据云 发表于 2020-5-24 11:53:55

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

此楼正解,https://www.cnblogs.com/L521Z/p/11785348.html 字符串常用的格式化方法可以看下

黄剑盛 发表于 2020-5-24 21:03:50

13272610508 发表于 2020-5-23 19:36
print('十进制 -> 二进制 : %d ->' %num, bin(num))   
这个呢,占位符只有一个,但是后面变量有两个, ...

%对应的是%d,而后面的bin(num)是变量,所以可以直接输出,不用格式化,
相当于‘%num—〉’+bin(num)
页: [1]
查看完整版本: 引号里的%d为什么不直接打印出来,居然是变量