72. 編輯距離
1.十六進位制:十六進位制用0x字首和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
2.轉義字元:轉義字元\可以轉義很多字元,比如\n表示換行,\t表示製表符,字元\本身也要轉義,所以\\表示的字元就是\,
不轉義字元:如果字串裡面有很多字元都需要轉義,就需要加很多\,為了簡化,Python還允許用r''表示''內部的字串預設不轉義,例如:print(r'\\\123\\\t')
多行顯示字元:,Python允許用'''...'''的格式表示多行內容,>> print('''line1
... line2
... line3''')
line1
line2
line3
3.
整除 // 結果保留整數
求餘 % 得到兩個整數相除的餘數
4.格式化字串:
我們經常會輸出類似'親愛的xxx你好!你xx月的話費是xx,餘額是xx'之類的字串,而xxx的內容都是根據變數變化的,所以,需要一種簡便的格式化字串的方式。
【1】% 字元格式化字串
常用的佔位符:
整數 %d; 浮點數 %f; 字串 %s; 十六進位制整數 %x;百分號 %%;
%02d 表示補0成為2位數的整數:print('%02d' % (1))-->01
%.2f 表示補0成為2位數的浮點數:print('%.2f' % (3.1415926))-->3.14
【2】format()
format()它會用傳入的引數依次替換字串內的佔位符{0}、{1}……,
例如:
print('Hello,{0}成績提升了{1:.2f}%'.format('小明',35.567))-->Hello,小明成績提升了35.57%
【3】f-string 格式化字串
使用以f開頭的字串,稱之為f-string,它和普通字串不同之處在於,字串如果包含{xxx},就會以對應的變數替換
例如:
r =2.5
print(f'name is {r:.2f}') --> name is 2.50
4.格式化字串:
我們經常會輸出類似'親愛的xxx你好!你xx月的話費是xx,餘額是xx'
【1】% 字元格式化字串
常用的佔位符:
整數 %d; 浮點數 %f; 字串 %s; 十六進位制整數 %x;百分號 %%;
%02d 表示補0成為2位數的整數:print('%02d' % (1))-->01
%.2f 表示補0成為2位數的浮點數:print('%.2f' % (3.1415926))-->3.14
【2】format() 格式化字串
format()它會用傳入的引數依次替換字串內的佔位符{0}、{1}……,
例如:
print('Hello,{0}成績提升了{1:.2f}%'.format('小明',35.567))-->Hello,小明成績提升了35.57%
【3】f-string 格式化字串
使用以f開頭的字串,稱之為f-string,它和普通字串不同之處在於,字串如果包含{xxx},就會以對應的變數替換
例如:
r =2.5
print(f'name is {r:.2f}') --> name is 2.50
5.list 和 tuple
列表:list是一種有序集合,可以隨時新增和刪除其中的元素,list中的元素,從索引0開始。
l=[1,2.3]
用len()函式可以獲得list元素的個數:len(l)-->3
取最後一個元素:l[-1]-->3
【追加元素至末尾】:.append( "tom")
【新增元素至指定下標位】:.insert(1,"tom")
【刪除末尾元素】:.pop()
【刪除指定位置元素】:.pop(1)
【替換元素】:>>> classmates[1] = 'Sarah'
tuple:元組,一旦初始化不能修改
只有1個元素的tuple定義時必須加一個逗號,,來消除歧義:t(1,)
6.條件判斷
if ... :
else...: end
if....:
elif....:
else..: .end
7.輸入函式 input( )
birth = input('birth: ')
讀入的 birth 是 str 型別
8.迴圈
【for ...in..迴圈】
例如:求和
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
【range 函式】
輸出指定範圍的數值,從0開始,不包括最大值。
l=list(range(0,5))
print(l)
>>[0, 1, 2, 3, 4]
【while迴圈】
只要條件滿足,就不斷迴圈,條件不滿足時退出迴圈。
求100內奇數 的和:
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
(死迴圈:while True)
【break 退出迴圈】提前結束迴圈
例如:列印1~10數字
n = 1
while n <= 100:
if n > 10: # 當n = 11時,條件滿足,執行break語句
break # break語句會結束當前迴圈
print(n)
n = n + 1
print('END')
【continue 執行下次迴圈】天國當前這次迴圈,執行下次迴圈
例如:列印1~10,只打印奇數
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶數,執行continue語句
continue # continue語句會直接繼續下一輪迴圈,後續的print()語句不會執行
print(n)
-->>1,3,5,7,9
9. 使用dict(字典) 和set(存key)
【dict 字典】使用鍵-值(key-value)儲存,具有極快的查詢速度。
建立字典: d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
【in 判斷key是否存在】:
'Thomas' in d -->False
【get 返回key的值】:
d.get('Thomas') --->None
d.get('Bob') --->75
【pop 刪除鍵值對】:
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
【set】:儲存key 的集合
定義set:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
重複元素在set中自動被過濾:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
【add 新增元素】
>>> s.add(4)
>>> s
{1, 2, 3, 4}
【remove 刪除元素】
>>> s.remove(4)
>>> s
{1, 2, 3}
【set 求交集】
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
【set 求並集】
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 | s2
{1, 2, 3, 4}
【不可變物件 str】
【可變物件 list】
- 函式
【檢視函式用法 help】:
help(abs)-->
Help on built-in function abs in module builtins:
abs(x, /)
Return the absolute value of the argument.
【資料型別轉換】:
把其他資料型別轉換為整數:int(x)
轉換成浮點型:float( x )
轉換成字元型:str( x )
轉換成布林型:bool( x )
轉換成16進位制:hex( x )
【給函式起別名引用】:
>>> a = abs # 變數a指向abs函式
>>> a(-1) # 所以也可以通過a呼叫abs函式
1
【定義函式】:
在Python中,定義一個函式要使用def語句,依次寫出函式名、括號、括號中的引數和冒號:,然後,在縮排塊中編寫函式體,函式的返回值用return語句返回。
def my_abs(x):
if x >= 0:
return x
else:
return -x
函式體內部的語句在執行時,一旦執行到return時,函式就執行完畢,並將結果返回。
【匯入函式】:
如果你已經把my_abs()的函式定義儲存為abstest.py檔案了,那麼,可以在該檔案的當前目錄下啟動Python直譯器,用from abstest import my_abs來匯入my_abs()函式,注意abstest是檔名(不含.py副檔名):
abstest.py檔案中定義函式:
───────────────────────────────────────────────────┤
│>>> def my_abs(x): │
│... if x >= 0: │
│... return x │
│... else: │
│... return -x
匯入函式:
>>> from abstest import my_abs
>>> my_abs(-9)
9
【空函式】:用pass語句:
def nop( ):
pass
【pass做佔位符】
pass可以用來作為佔位符,比如現在還沒想好怎麼寫函式的程式碼,就可以先放一個pass,讓程式碼能執行起來。
例如:
if age >= 18:
pass
【返回多個值】
函式可以同時返回多個值,但其實就是一個tuple。
【函式的引數】
【位置引數】呼叫函式時,傳入的兩個值按照位置順序依次賦給引數x和n。
例如:用來計算x的n次方
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
>>> power(5, 2)
25
【預設引數】
預設引數可以簡化函式的呼叫。設定預設引數時,有幾點要注意:
一是必選引數在前,預設引數在後,否則Python的直譯器會報錯(思考一下為什麼預設引數不能放在必選引數前面);
二是如何設定預設引數。
當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。
例如:
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
【可變引數】
僅僅在引數前面加了一個*號,允許你傳入0個或任意個引數。在函式內部,引數numbers接收到的是一個tuple。
例如:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
Python允許你在list或tuple前面加一個*號,把list或tuple的元素變成可變引數傳進去:
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
【關鍵字引數】
鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為一個dict。
例如:
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
- ···
- 讀寫
12
12