![Python王者归来](https://wfqqreader-1252317822.image.myqcloud.com/cover/412/31794412/b_31794412.jpg)
4-2 格式化输出数据使用print( )
相信读者经过前三章的学习,已经对使用print( )函数输出数据非常熟悉了,该是时候完整解说这个输出函数的用法了。
4-2-1 函数print( )的基本语法
它的基本语法格式如下:
print(value, … , sep=” ”, end=”\n”,file=sys.stdout, flush=False)
value表示想要输出的数据,可以一次输出多个数据,各数据间以逗号隔开。
sep当输出多个数据时,可以插入各个数据的分隔字符,默认是一个空格字符。
end当数据输出结束时所插入的字符,默认是插入换行字符,所以下一次print( )函数的输出会在下一行输出。
file数据输出位置,默认是sys.stdout,也就是屏幕。
flush是否清除数据流的缓冲区,预设是不清除。
程序实例ch4_1.py:重新设计ch3_17.py,其中在第二个print( ),2个输出数据的分隔字符是“$$$ ”。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P44_31136.jpg?sign=1739664313-iYq3QfVC5IeuQxF3YCxgnJdKzRQxrqcn-0-943984294e091017335f9598d178f3b4)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P44_31176.jpg?sign=1739664313-K84dOrItbaamBGgOoLwB5HPxC1R4TIzI-0-674aaed4e82f2c3cb04c4aef88a5a522)
程序实例ch4_2.py:重新设计ch4_1.py,将2个数据在同一行输出,彼此之间使用Tab键隔开。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P44_31179.jpg?sign=1739664313-0TJtqPnIJuyWyTr2qS5j8ZUl0GTGqfLW-0-f7c29d5a3636f3434782da1097bac546)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P45_31583.jpg?sign=1739664313-YFgUbHi4JVqqWiIvpQpA2bBHe0SPnkLM-0-a7156db516c8f579c395cf36451b21db)
4-2-2 格式化print( )输出
在使用格式化输出时,基本使用格式如下:
print(" …输出格式区… " % ( 变量系列区, … ))
在上述输出格式区中,可以放置变量系列区对应的格式化字符,基本意义如下:
● %d:格式化整数输出。
● %f:格式化浮点数输出。
● %x:格式化16进位整数输出。
● %o:格式化8进位整数输出。
● %s:格式化字符串输出。
程序实例ch4_3.py:格式化输出的应用。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P45_31587.jpg?sign=1739664313-v9ibsY3TtAm17W63cMeYUdpq7LLIkxaa-0-09a874661a5bef26e9b88f29cb529af0)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P45_31593.jpg?sign=1739664313-3onUu7fLHaHTDk7urQcjhcDQhTLuPtZd-0-f72c668af1cb8f0799e73eba886dfcf0)
设计程序时,print( )函数内的输出格式区也可以用一个字符串变量取代。
程序实例ch4_4.py:重新设计ch4_3.py,在print( )内用字符串变量取代字符表列,读者可以参考第5和6行与原先ch4_3.py的第5列作比较。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P45_31596.jpg?sign=1739664313-XZWzJTJQ3TBFSqhc9llH5jSiyipsPCkM-0-f37efb7bcf9daa64a3aa9a13710a94c7)
执行结果 与ch4_3.py相同。
程序实例ch4_5.py:格式化8进位和16进位输出的应用。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P45_31607.jpg?sign=1739664313-cZO6O1Ty52sMHOGroOxBVJjRW2iYa4f9-0-634394b65af7577d5ce0d10a734fb98d)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P45_31613.jpg?sign=1739664313-2rBeqSxrv54vcLUq0jNAI13HKKzNoONx-0-6d836e85e65b8308b8329393f5778ec8)
程序实例ch4_6.py:将整数与浮点数分别以%d、%f、%s格式化,同时观察执行结果。特别要注意的是,浮点数以整数%d格式化后,小数数据将被舍去。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P45_31616.jpg?sign=1739664313-bRuQ2PRnDOGagky630TQr9lFVOOj9zuz-0-29f693543c616250931d86daf5bc0302)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P45_31622.jpg?sign=1739664313-My3wWiCdn0TpMZrnelGrxBzxnuUIw4wF-0-22d2c9996d0923cda2e6147972d05d00)
4-2-3 精准控制格式化的输出
在上述程序实例ch4_6.py中,我们发现最大的缺点是无法精确控制浮点数的输出位置,print( )函数在格式化过程中,有提供功能可以让我们设定保留多少格的空间让资料做输出,语法如下:
● %(+|-)nd:格式化整数输出。
● %(+|-)m.nf:格式化浮点数输出。
● %(+|-)nx:格式化16进位整数输出。
● %(+|-)no:格式化8进位整数输出。
● %(-)ns:格式化字符串输出。
上述对浮点数而言,m代表保留多少格数供输出(包含小数点),n则是小数数据保留格数。至于其他的数据格式n则是保留多少格数空间,如果保留格数空间不足将完整输出数据,如果保留格数空间太多则数据靠右对齐。
如果格式化数值数据有加上负号(-),表示保留格数空间有多时,数据将靠左输出。如果格式化数值数据有加上正号(+),表示输出数据是正值时,将在左边加上正值符号。
程序实例ch4_7.py:格式化输出的应用。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P46_32023.jpg?sign=1739664313-4Uwxy1ijrMv7xA6x0GMk5JwxH8fiEp9C-0-c95ebf3821f1f9c33f934f2d3422be0f)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P46_32031.jpg?sign=1739664313-M3RkdPsiF4AzuvShfFvSkBUFaZ0hQwYB-0-5f6962a84c63f2f69b9fe23cc6d2eea7)
程序实例ch4_8.py:格式化输出,靠左对齐的实例。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P46_32034.jpg?sign=1739664313-mfWxQ94XAADeC4c87tgqYr4JXvlAJGw8-0-2fd6f8c6372da8309092e3675c964f06)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P46_32040.jpg?sign=1739664313-ACsOtolIVPATtgKvuqW215cHCIrtoole-0-62a04969d27cb933aa534e0f52240e52)
程序实例ch4_9.py:格式化输出,正值数据将出现正号(+)。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P46_32043.jpg?sign=1739664313-2NF4IcCi0tnSWZ4UeWUXwkO68PKAKOAP-0-b291f34b66d8676b7090f0c70222490b)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P46_32049.jpg?sign=1739664313-CTdI15koUJxHr0dEH0i6AGp7gowPled1-0-7151fa6b8a8d8e36b57b2df40fcb10a3)
程序实例ch4_10.py:格式化输出的应用。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P46_32052.jpg?sign=1739664313-EyGFG3CI7Z5YON5rXoSzYAHCdf5wof07-0-4678dc1b54df26539d5990c8deabb27f)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P46_32058.jpg?sign=1739664313-AkxcR4T259I9Di6xbSQdJRCpbH9plD6X-0-bfa208a2596fe3ac63a12d46e9cea4d8)
4-2-4 format( )函数
这是Python增强版的格式化输出功能,字符串使用format方法做格式化的动作,它的基本使用格式如下:
print(" …输出格式区… " .format( 变量系列区, … ))
在输出格式区内的字符串变量使用“{ }”表示。
程序实例ch4_11.py:使用format( )函数重新设计ch4_3.py。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P47_32461.jpg?sign=1739664313-Q2EURgXwBvqU4I6IEfaVKiIpEYNSqOjn-0-cfc5a27936ea80c201150128a730d9fc)
执行结果 与ch4_3.py相同。
程序实例ch4_12.py:以字符串代表输出格式区,重新设计ch4_11.py。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P47_32470.jpg?sign=1739664313-e8YBq4NEKE6lZwPKMi9zHkwbHKXavpc4-0-5c64763ab58508d83c9a29225d23ac4b)
执行结果 与ch4_3.py相同。
4-2-5 字符串输出与基本排版的应用
其实适度利用输出格式,也可以产生一封排版的信件,以下程序的前3行会先利用sp字符串变量建立一个含40格的空白格数,然后产生对齐效果。
程序实例ch4_13.py:有趣排版信件的应用。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P47_32480.jpg?sign=1739664313-QymEeIBKySreXaaWMA2TMwjspd1dEsEX-0-2ea507d69e96bcf4a824abe4ba4622d8)
执行结果
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P47_32486.jpg?sign=1739664313-wi6xCGNTwqS8zUzD67OUVBTYdxGE8bsq-0-f10bdcd2907677a501e01fa9b1cb9de2)
4-2-6 一个无聊的操作
程序实例ch4_13.py第2行,利用空格乘以40产生40个空格,功能是用于排版。如果将某个字符串乘以500,然后用print( )输出,可以在屏幕上建立一个无聊的画面。
实例1:在屏幕上建立一个无聊的画面。
![](https://epubservercos.yuewen.com/6532E4/17214367404798806/epubprivate/OEBPS/Images/Figure-P48_32895.jpg?sign=1739664313-3iyjfn7V0x3kRjeVoQ4y8tmjNTcEsHaC-0-938ad68861bcb1213fbbea341f9fc764)
上述实例是教导读者,活用Python,可以产生许多意外的结果。