1、如果字串內部既包含'
又包含"
怎麼辦?可以用轉義字元\
來標識,比如:
'i\'m \"ok\"!'
表示的字串內容是:
i'm "ok"!
上面是在互動式命令行內輸入,注意在輸入多行內容時,提示符由如果字串內部有很多換行,用
\n
寫在一行裡不好閱讀,為了簡化,python允許用'''...'''
的格式表示多行內容,可以自己試試:
>>> print('''line1
... line2
... line3''')
line1
line2
line3
>>>
變為...
,提示你可以接著上一行輸入。如果寫成程式,就是:
print('''line1
line2
line3''')
理解變數在計算機記憶體中的表示也非常重要。當我們寫:
a = 'abc'
時,python直譯器幹了兩件事情:
在記憶體中建立了乙個'abc'
的字串;
在記憶體中建立了乙個名為a
的變數,並把它指向'abc'
。
解釋一下整數的除法為什麼也是精確的。在python中,有兩種除法,一種除法是/
:
>>>
10 / 3
3.3333333333333335
/
除法計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數:
>>>
9 / 3
3.0
還有一種除法是//
,稱為地板除,兩個整數的除法仍然是整數:
>>> 10
// 3
3
你沒有看錯,整數的地板除//
永遠是整數,即使除不盡。要做精確的除法,使用/
就可以。
因為//
除法只取結果的整數部分,所以python還提供乙個餘數運算,可以得到兩個整數相除的餘數:
>>>
10 % 3
1
無論整數做//
除法還是取餘數,結果永遠是整數,所以,整數運算結果永遠是精確的。
單個字元的編碼,python提供了ord()
函式獲取字元的整數表示,chr()
函式把編碼轉換為對應的字元:
>>> ord('a')
65>>> ord('中')
20013
>>> chr(66)
'b'>>> chr(25991)
'文'
如果知道字元的整數編碼,還可以用十六進製制這麼寫str
:
>>>
'\u4e2d\u6587'
'中文'
兩種寫法完全是等價的。
由於python的字串型別是str
,在記憶體中以unicode表示,乙個字元對應若干個位元組。如果要在網路上傳輸,或者儲存到磁碟上,就需要把str
變為以位元組為單位的bytes
。
python對bytes
型別的資料用帶b
字首的單引號或雙引號表示:
x = b'abc'
要注意區分'abc'
和b'abc'
,前者是str
,後者雖然內容顯示得和前者一樣,但bytes
的每個字元都只占用乙個位元組。
以unicode表示的str
通過encode()
方法可以編碼為指定的bytes
,例如:
>>> 'abc'.encode('ascii')
b'abc'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
traceback (most recent call last):
file "", line 1, in
unicodeencodeerror: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
純英文的str
可以用ascii
編碼為bytes
,內容是一樣的,含有中文的str
可以用utf-8
編碼為bytes
。含有中文的str
無法用ascii
編碼,因為中文編碼的範圍超過了ascii
編碼的範圍,python會報錯。
在bytes
中,無法顯示為ascii字元的位元組,用\x##
顯示。
反過來,如果我們從網路或磁碟上讀取了位元組流,那麼讀到的資料就是bytes
。要把bytes
變為str
,就需要用decode()
方法:
格式化整數和浮點數還可以指定是否補0和整數與小數的位數:
>>>
'%2d-%02d' % (3, 1)
' 3-01'
>>>
'%.2f' % 3.1415926
'3.14'
如果你不太確定應該用什麼,%s
永遠起作用,它會把任何資料型別轉換為字串:
>>>
'age: %s. gender: %s' % (25, true)
'age: 25. gender: true'
有些時候,字串裡面的%
是乙個普通字元怎麼辦?這個時候就需要轉義,用%%
來表示乙個%
:
>>>
'growth rate: %d %%' % 7
'growth rate: 7 %'
python教學筆記 python學習筆記(一)
1.eval 函式 eval是單詞evaluate的縮寫,就是 求.的值的意思。eval 函式的作用是把str轉換成list,dict,tuple.li 1 1,2,3 print eval li 1 di 1 print eval di 1 tu 1 2,4,6 print eval tu 1 執...
python學習筆記
coding utf 8 coding utf 8 應該像八股文一樣在每個指令碼的頭部宣告,這是個忠告 為了解決中文相容問題,同時你應該選擇支援 unicode 編碼的編輯器環境,保證在執行指令碼中的每個漢字都是使用 utf 8 編碼過的。cdays 5 exercise 3.py 求0 100之間...
Python 學習筆記
python 學習筆記 def run print running.def execute method method execute run result running.condition false test yes,is true if condition else no,is false ...