print() 函數使用以%
開頭的轉換說明符對各種類型的數據進行格式化輸出,具體請看下錶。
轉換說明符 | 解釋 |
---|---|
%d、%i | 轉換爲帶符號的十進制整數 |
%o | 轉換爲帶符號的八進制整數 |
%x、%X | 轉換爲帶符號的十六進制整數 |
%e | 轉化爲科學計數法表示的浮點數(e 小寫) |
%E | 轉化爲科學計數法表示的浮點數(E 大寫) |
%f、%F | 轉化爲十進制浮點數 |
%g | 智能選擇使用 %f 或 %e 格式 |
%G | 智能選擇使用 %F 或 %E 格式 |
%c | 格式化字符及其 ASCII 碼 |
%r | 使用 repr() 函數將表達式轉換爲字符串 |
%s | 使用 str() 函數將表達式轉換爲字符串 |
轉換說明符(Conversion Specifier)只是一個佔位符,它會被後面表達式(變量、常量、數字、字符串、加減乘除等各種形式)的值代替。
【實例】輸出一個整數:
- 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 支持的標誌如下:
標誌 | 說明 |
---|---|
- | 指定左對齊 |
+ | 表示輸出的數字總要帶着符號;整數帶+ ,負數帶- 。 |
0 | 表示寬度不足時補充 0,而不是補充空格。 |
幾點說明:
- 對於整數,指定左對齊時,在右邊補 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