2022年 11月 3日

Python的占位格式符

对于print函数里的语句

 print("我的名字是%s, 年龄是%d"%(name, age))

中的%s和%d叫做占位符,它们的完整形态是

%[(name)][flags][width][.precision]typecode

其中带有[]的前缀都是可以省略的。

[(name)]:         

  1. (name)
  2. 表示, 根据, 制定的名称(key), 查找对应的值, 格式化到字符串当中
  3. mathScore = 59
  4. englishScore = 58
  5. print("我的数学分数是%d, 英文的分数是: %d"%(mathScore, englishScore))
  6. print("我的数学分数是%d, 英文的分数是: %d"%(englishScore, mathScore))
  7. print("我的数学分数是%(ms)d, 英文的分数是: %(es)d"%({"es": englishScore, "ms": mathScore}))

在第一个print语句中第一个坑对应mathScore第二个坑对应englishScore,如果我要将两个位置进行调换即在第一个坑填englishScore第二个坑填mathScore,除了第二个print语句中直接将位置进行调换外,还可以进行第三个print语句的操作:其中”es”:englishScore叫做字典,即在这个语句中给变量起一个新的代号则在之后的填坑时可以直接将字典对应到坑前

[width]:

即表示输出的内容所占用的宽度

  1. width , 表示, 占用的宽度
  2. print("%10d" % mathScore)

[flags]:

即指输出的内容的对齐方式,默认是右对齐

前面加-号是左对齐

前面加一个空格则会在输出内容时在前面加一个空格,主要是在出现负数的场景里与负数进行对齐,而且不管在前面加几个空格,在输出的时候都只永远加一个空格

在前面加一个0是指在输出的时候用0填充,主要应用在时间的表示上

  1. min = 5
  2. sec = 18
  3. # # 05:08
  4. print("%02d:%02d"%(min, sec))

为什么前缀是02,是因为时间的输出都是两位,所以要占2个宽度,但当内容位数不够时,系统会用空格进行填充,但根据时间的表示,需要在空格的地方变成0所以是02

[.precision]:

控制小数位数,在默认情况下小数的位数是6位

typecode:

对特殊的输出%符号说明:当我们输出百分数时不能写成下面的形式

  1. score=65
  2. print("%d%"%score)

而是应该在输出%号是写成%%

  1. score=65
  2. print("%d%%"%score)

注:python里不存在整数转二进制数即%b