標籤:

Python中%是什麼意思?如何使用?

小白,剛剛自學Python,但這個語言的%號讓我很疑惑不知什麼意思,教材的前期教的代碼幾乎都有這個符號!

&>&>&> 』This int, %5d, was placed in a field of width 5』 % (7)

』This int, 7, was placed in a field of width 5』

這個就不清楚%在這段程序中起什麼作用,最主要的,不知如何使用它了!


%是個運算符。

對於整數,是取余運算。

對於字元串,是c風格的字元串格式化運算。


來源於c語言中經典%d


看上去你問的是字元串中的%,這是一個幾乎所有語言中都通用的一類字元串操作,所以如果你的教材默認了你有其他編程語言基礎的話,可能就不會詳細介紹了。

簡單的說,這是一種將其他變數置入字元串特定位置以生成新字元串的操作,比如說:

n = "Aki"
"My name is %s" % n

這段代碼首先定義了一個名為n的變數,內容為Aki。然後下方的字元串中有一個%s,他的含義是「這裡將被替換成一個新的字元串」,用作替換的內容放在字元串後面的%後面,就是那個n。所以最終這個字元串會變成My name is Aki。

字元串中的%後面會附帶一個字母,代表著用來替換的變數的類型,比如說%d代表著你將替換到此處的變數是一個整數,而%s代表著一個字元串。詳細細節可在這裡看到。

https://docs.python.org/2/library/stdtypes.html#string-formatting-operations

另外,這種操作可以同時將多個變數放進字元串,只需要用括弧把變數們括起來。

下面是一些例子。

&>&>&> "www.%s.com"%"zhihu"#字元串
www.zhihu.com

&>&>&> "%dkm"%1990#整數型
1990km

&>&>&> "%s %d %f"%("abc",123,3.21)#多個值
abc 123 3.210000


String Formatting Operations


問的是%操作符(字元串格式化,string formatting),說明如下:

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

  • (name)為命名
  • flags可以有+,-, 或0。+表示右對齊。-表示左對齊。 為一個空格,表示在正數的左側填充一個空格,從而與負數對齊。0表示使用0填充。
  • width表示顯示寬度
  • precision表示小數點後精度

----------------以下是類型碼--------------------

%s 字元串 (採用str()的顯示)

%r 字元串 (採用repr()的顯示)

%c 單個字元

%b 二進位整數

%d 十進位整數

%i 十進位整數

%o 八進位整數

%x 十六進位整數

%e 指數 (基底寫為e)

%E 指數 (基底寫為E)

%f 浮點數

%F 浮點數,與上相同

%g 指數(e)或浮點數 (根據顯示長度)

%G 指數(E)或浮點數 (根據顯示長度)

%% 字元"%"

------------------舉例----------------------

&>&>&> print("%6.3f" % 2.3)
2.300
# 第一個"%"後面的內容為顯示的格式說明,6為顯示寬度,3為小數點位數,f為浮點數類型
# 第二個"%"後面為顯示的內容來源,輸出結果右對齊,2.300長度為5,故前面有一空格
&>&>&> print("%+10x" % 10)
+a
# x為表示16進位,顯示寬度為10,前面有8個空格
&>&>&>print("%-5x" % -10)
-a
# "%-5x" 負號為左對齊,顯示寬度為5,故-a後面有3個空格
&>&>&>pi=3.1415
&>&>&>print ("pi的值是%s"%pi)
pi的值是3.1415
&>&>&>print ("pi的值是%.8f"%pi)
pi的值是3.14150000

上面的width, precision為兩個整數。我們可以利用*,來動態代入這兩個量。比如:

&>&>&> print("%10.*f" % (4, 1.2))
1.2000

---------其他補充----------

%的另一種用法是數學運算:取餘數(remainder)

&>&>&> 7%2
1


有 代碼例子會更好說明用途

數值運算 1 % 3 是指模運算

字元串操作 abc %s % abc %s類似佔位符 這行代碼的結果

可以試一下 看看 就知道是什麼意思了


推薦閱讀:

Python - lru_cache和singledispatch裝飾器
python把一個unicode字元串寫入文件為什麼會報錯?
Python · 裝飾器(Decorator)及其應用
如何在本地搞一個小程序的伺服器之我沒有vps我也很絕望呀
Matplotlib的大新聞

TAG:Python |