柿子饼同学 发表于 2021-3-29 20:22:57

字符串格式化问题

代码是这样的,报错了>>> n = 52
>>> print('%d %b'%n%n)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
    print('%d %b'%n%n)
TypeError: not enough arguments for format string我就很奇怪,为什么它说参数不够,把52换算成一个十进制一个二进制,它怎么就少参数了{:10_306:}
求解,谢谢{:10_254:}

wp231957 发表于 2021-3-29 20:31:04

多个参数时应该用小括号扩起来,中间用逗号分隔,

hrp 发表于 2021-3-29 20:31:42

正常来说应该这样写:print('%d %b'%(n, n))
但这个%b也是错的

洋洋痒 发表于 2021-3-29 20:35:29

这种格式化方法中没有%b这个选项

字符串格式化符号含义

符号
说明
%c
格式化字符及其 ASCII 码
%s
格式化字符串
%d
格式化整数
%o
格式化无符号八进制数
%x
格式化无符号十六进制数
%X
格式化无符号十六进制数(大写)
%f
格式化浮点数字,可指定小数点后的精度
%e
用科学计数法格式化浮点数
%E
作用同 %e,用科学计数法格式化浮点数
%g
根据值的大小决定使用 %f 或 %e
%G
作用同 %g,根据值的大小决定使用 %f 或者 %E

柿子饼同学 发表于 2021-3-29 20:35:42

本帖最后由 柿子饼同学 于 2021-3-29 20:37 编辑

hrp 发表于 2021-3-29 20:31
正常来说应该这样写:print('%d %b'%(n, n))
但这个%b也是错的
%b不是格式化二进制数么,刚试了一下,又错了,%b应该怎么用呢

洋洋痒 发表于 2021-3-29 20:36:46

柿子饼同学 发表于 2021-3-29 20:35
%b不是格式化二进制数么

https://fishc.com.cn/forum.php?mod=viewthread&tid=92997&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403

hrp 发表于 2021-3-29 20:37:16

柿子饼同学 发表于 2021-3-29 20:35
%b不是格式化二进制数么

不清楚哦,我只能确定在3.6中是没有%b这个写法

柿子饼同学 发表于 2021-3-29 20:37:52

wp231957 发表于 2021-3-29 20:31
多个参数时应该用小括号扩起来,中间用逗号分隔,

好的,谢谢

柿子饼同学 发表于 2021-3-29 20:38:50

洋洋痒 发表于 2021-3-29 20:36
https://fishc.com.cn/forum.php?mod=viewthread&tid=92997&extra=page%3D1%26filter%3Dtypeid%26typeid% ...

可能和format搞混了{:10_266:}

柿子饼同学 发表于 2021-3-29 20:40:08

洋洋痒 发表于 2021-3-29 20:36
https://fishc.com.cn/forum.php?mod=viewthread&tid=92997&extra=page%3D1%26filter%3Dtypeid%26typeid% ...

那怎么将字符串变成二进制呢

洋洋痒 发表于 2021-3-29 20:40:27

柿子饼同学 发表于 2021-3-29 20:40
那怎么将字符串变成二进制呢

format呗

wp231957 发表于 2021-3-29 20:40:34

柿子饼同学 发表于 2021-3-29 20:37
好的,谢谢

虽然计算机中除了01并没有其他
但是它又没办法把01展现给终端客户
所以我们看到的01都是字符串,所以就没有%b
这个写法

柿子饼同学 发表于 2021-3-29 20:40:42

hrp 发表于 2021-3-29 20:37
不清楚哦,我只能确定在3.6中是没有%b这个写法

是我搞错了{:10_266:}
那怎么把他变成二进制呢

柿子饼同学 发表于 2021-3-29 20:42:03

本帖最后由 柿子饼同学 于 2021-3-29 20:43 编辑

wp231957 发表于 2021-3-29 20:40
虽然计算机中除了01并没有其他
但是它又没办法把01展现给终端客户
所以我们看到的01都是字符串,所以就 ...

那为什么format里可以呢

hrp 发表于 2021-3-29 20:42:21

柿子饼同学 发表于 2021-3-29 20:40
是我搞错了
那怎么把他变成二进制呢

n = 5

print('%d %s'%(n, bin(n)))

柿子饼同学 发表于 2021-3-29 20:42:35

洋洋痒 发表于 2021-3-29 20:40
format呗

啊这

柿子饼同学 发表于 2021-3-29 20:43:42

hrp 发表于 2021-3-29 20:42
n = 5

print('%d %s'%(n, bin(n)))

谢谢{:10_254:}

wp231957 发表于 2021-3-29 20:44:26

柿子饼同学 发表于 2021-3-29 20:42
那为什么format里可以呢

看15楼,就是%s啊

柿子饼同学 发表于 2021-3-29 20:47:56

wp231957 发表于 2021-3-29 20:44
看15楼,就是%s啊

%d也可以吧,但是好像没办法区分二进制和十进制{:10_269:}
>>> print('%d'%10110110)
10110110
它返回的还是二进制的呀

wp231957 发表于 2021-3-29 20:49:32

柿子饼同学 发表于 2021-3-29 20:47
%d也可以吧,但是好像没办法区分二进制和十进制

它返回的还是二进制的呀

错,%d只能展现10进制
二进制用%s
页: [1] 2
查看完整版本: 字符串格式化问题