相信读者经过前三章的学习,对于使用print( )函数输出数据已经非常熟悉了,现在是时候完整解说这个输出函数的用法了。
print( )的基本语法格式如下:
print(value, … , sep=" ", end="\n", file=sys.stdout, flush=False)
value: 表示想要输出的数据,可以一次输出多个数据,各数据间以逗号隔开。
sep: 当输出多个数据时,可以插入各数据的分隔字符,默认是一个空格。
end: 当数据输出结束时所插入的字符,默认是插入换行字符,所以下一次print( )函数的输出会在下一行输出。如果想让下次输出不换行,可以在此设置空字符串,或是空格或是其他字符串。
file: 数据输出位置,默认是sys.stdout,也就是屏幕。也可以使用此设置,将输出导入其他文件或设备。
flush: 是否清除数据流的缓冲区,默认是不清除。
程序实例ch4_1.py :重新设计ch3_18.py,其中在第二个print( )中两个输出数据的分隔字符是“ $$$”。
执行结果
程序实例ch4_2.py :重新设计ch4_1.py,将两个数据在同一行输出,彼此之间使用Tab键的距离隔开。
执行结果
在使用格式化输出时,基本使用格式如下:
print(" …输出格式区… " % ( 变量系列区, … ))
在上述 输出格式区 中,可以放置 变量系列区 相对应的格式化字符,这些格式化字符的基本意义如下。
%d :格式化整数输出。
%f :格式化浮点数输出。
%x :格式化十六进制整数输出。
%X :格式化大写十六进制整数输出。
%o :格式化八进制整数输出。
%s :格式化字符串输出。
%e: 格式化科学记数法e的输出。
%E: 格式化科学记数法大写E的输出。
程序实例ch4_3.py :格式化输出的应用。
执行结果
设计程序时,在print( )函数内的 输出格式区 也可以用一个字符串变量取代。
程序实例ch4_4.py :重新设计ch4_3.py,在print( )内用字符串变量取代字符串列,读者可以参考第5行和第6行与原先ch4_3.py的第5行做比较。
执行结果 与ch4_3.py相同。
程序实例ch4_5.py :格式化十六进制和八进制输出的应用。
执行结果
程序实例ch4_6.py :将整数与浮点数分别以%d、%f、%s格式化,同时观察执行结果。特别要注意的是,浮点数以整数%d格式化后,小数数据将被舍去。
执行结果
下列是使用%x和%X格式化数据输出的实例。
下列是使用%e和%E格式化科学记数法数据输出的实例。
在上述程序实例ch4_6.py中,我们发现最大的缺点是无法精确地控制浮点数的小数输出位数,print( )函数在格式化过程中,可以让我们设置保留多少格的空间让文件做输出,此时格式化的语法如下。
%(+|-)nd :格式化整数输出。
%(+|-)m.nf :格式化浮点数输出。
%(+|-)nx :格式化十六进制整数输出。
%(+|-)no :格式化八进制整数输出。
%(-)ns :格式化字符串输出。
%(-)m.ns :m是输出字符串宽度,n是显示字符串长度,n小于字符串长度时会有裁减字符串的效果。
%(+|-)e :格式化科学记数法e输出。
%(+|-)E :格式化科学记数法大写E输出。
上述格式对浮点数而言,m代表保留多少格数供输出(包含小数点),n则是小数数据保留格数。至于其他的数据格式,n则是保留多少格数空间,如果保留格数空间不足将完整输出数据,如果保留格数空间太多则数据靠右对齐。
如果是格式化数值数据或字符串数据有加上负号(-),表示保留格数空间有多余时,数据将靠左输出。如果是格式化数值数据有加上正号(+),如果输出数据是正值时,将在左边加上正值符号。
程序实例ch4_7.py :格式化输出的应用。
执行结果
程序实例ch4_8.py :格式化输出,靠左对齐的实例。
执行结果
程序实例ch4_9.py :格式化输出,正值数据将出现正号(+)。
执行结果
程序实例ch4_10.py :格式化输出的应用。
执行结果
下面是格式化科学记数法e和E输出的应用。
对于格式化字符串有一个特别的是使用“%m.n”方式格式化字符串,这时m是保留显示字符串空间,n是显示字符串长度,如果n的长度小于实际字符串长度,会有裁减字符串的效果。
这是Python增强版的格式化输出功能,是字符串使用format方法做格式化的动作,基本使用格式如下:
print(" …输出格式区… " .format( 变量系列区, … ))
在输出格式区内的变量使用“{ }”表示。
程序实例ch4_11.py :使用format( )函数重新设计ch4_3.py。
执行结果 与ch4_3.py相同。
程序实例ch4_12.py :以字符串代表输出格式区,重新设计ch4_11.py。
执行结果 与ch4_3.py相同。
在使用{ }代表变量时,也可以在{ }内增加编号n,此时n将是format( )内变量的顺序,编号从0开始计算,变量多时方便了解变量的顺序。
程序实例ch4_12_1.py :重新设计ch4_12.py,在{ }内增加编号。
执行结果
也可以在format( )内使用具名参数。
程序实例ch4_12_2.py :使用具名参数,重新设计ch4_12_1.py。
执行结果
也可以将4-2-2节所述格式化输出数据的概念应用于format( ),例如,d是格式化整数、f是格式化浮点数、s是格式化字符串等。传统的格式化输出是使用%配合d、s、f,使用format则是使用“:”,可参考下列实例第5行。
程序实例ch4_12_3.py :计算圆面积,同时格式化输出。
执行结果
在使用格式化输出时默认是靠右输出,也可以使用下列参数设置输出对齐方式。
>:靠右对齐
<:靠左对齐
^:居中对齐
程序实例ch4_12_4.py :输出对齐方式的应用。
执行结果
在使用format输出时也可以使用填充字符,字符是放在“:”后面,在<、^、>或指定宽度之前。
程序实例ch4_12_5.py :填充字符的应用。
执行结果
适度利用输出格式,可以制作一封排版的信件,以下程序的前3行会先利用sp字符串变量建立一个含40格的空白格数,然后产生对齐效果。
程序实例ch4_12_6.py :有趣排版信件的应用。
执行结果
程序实例ch4_12_6.py第2行,利用空格乘以40产生40个空格,功能是用于排版。如果将某个字符串乘以500,然后用print( )输出,可以在屏幕上建立一个无聊的画面。
实例 :在屏幕上建立一个无聊的画面。
上述实例是启发读者活用Python,可以产生许多意外的结果。