print()函数使用以%开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。

Python符串格式化输出

转换说明符只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。

 

【实例】输出一个整数:

age=8

print("C语言中文网已经%d岁了!"%age)

运行结果:

C语言中文网已经8岁了!

 

在print()函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。本例的格式化字符串中包含一个%s说明符,它最终会被后面的age变量的值所替代。

中间的%是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。

格式化字符串中也可以包含多个转换说明符,这个时候也得提供多个表达式,用以替换对应的转换说明符;多个表达式必须使用小括号()包围起来。请看下面的例子:

name="C语言中文网"

age=8

url="http://c.biancheng.net/"

print("%s已经%d岁了,它的网址是%s。"%(name,age,url))

运行结果:

C语言中文网已经8岁了,它的网址是http://c.biancheng.net/。

总之,有几个占位符,后面就得跟着几个表达式。

指定最小输出宽度

当使用表1中的转换说明符时,可以使用下面的格式指定最小输出宽度(至少占用多少个字符的位置):

%10d表示输出的整数宽度至少为10;

%20s表示输出的字符串宽度至少为20。

n=1234567

print("n(10):%10d."%n)

print("n(5):%5d."%n)

url="http://c.biancheng.net/python/"

print("url(35):%35s."%url)

print("url(20):%20s."%url)

运行结果:

n(10):1234567.

n(5):1234567.

url(35):http://c.biancheng.net/python/.

url(20):http://c.biancheng.net/python/.

 

从运行结果可以发现,对于整数和字符串,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出。

指定对齐方式

默认情况下,print()输出的数据总是右对齐的。也就是说,当数据不够宽时,数据总是靠右边输出,而在左边补充空格以达到指定的宽度。Python允许在最小宽度之前增加一个标志来改变对齐方式,Python支持的标志如下:

 

Python符串格式化输出

几点说明:

对于整数,指定左对齐时,在右边补0是没有效果的,因为这样会改变整数的值。

对于小数,以上三个标志可以同时存在。

对于字符串,只能使用-标志,因为符号对于字符串没有意义,而补0会改变字符串的值。

n=123456

#%09d表示最小宽度为9,左边补0

print("n(09):%09d"%n)

#%+9d表示最小宽度为9,带上符号

print("n(+9):%+9d"%n)

f=140.5

#%-+010f表示最小宽度为10,左对齐,带上符号

print("f(-+0):%-+010f"%f)

s="Hello"

#%-10s表示最小宽度为10,左对齐

print("s(-10):%-10s."%s)

运行结果:

n(09):000123456

n(+9):+123456

f(-+0):+140.500000

s(-10):Hello.

指定小数精度

对于小数(浮点数),print()还允许指定小数点后的数字位数,也即指定小数的输出精度。

精度值需要放在最小宽度之后,中间用点号.隔开;也可以不写最小宽度,只写精度。具体格式如下:

%m.nf

%.nf

m表示最小宽度,n表示输出精度,.是必须存在的。

 

f=3.141592653

#最小宽度为8,小数点后保留3位

print("%8.3f"%f)

#最小宽度为8,小数点后保留3位,左边补0

print("%08.3f"%f)

#最小宽度为8,小数点后保留3位,左边补0,带符号

print("%+08.3f"%f)

运行结果:

3.142

0003.142

+003.142

作者:QinL

相关文章: