1. 程式人生 > 其它 >72. 編輯距離

72. 編輯距離

1.十六進位制:十六進位制用0x字首和0-9a-f表示,例如:0xff000xa5b4c3d2,等等。

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

2format()

格式化字串

format()它會用傳入的引數依次替換字串內的佔位符{0}{1}……,

例如:

print('Hello,{0}成績提升了{1:.2f}%'.format('小明',35.567))-->Hello,小明成績提升了35.57%

3f-string 格式化字串

使用以f開頭的字串,稱之為f-string,它和普通字串不同之處在於,字串如果包含{xxx},就會以對應的變數替換

例如:

r =2.5

print(f'name is {r:.2f}') --> name is 2.50

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

2format() 格式化字串

format()它會用傳入的引數依次替換字串內的佔位符{0}{1}……,

例如:

print('Hello,{0}成績提升了{1:.2f}%'.format('小明',35.567))-->Hello,小明成績提升了35.57%

3f-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)

-->>13579

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

  1. 函式

【檢視函式用法 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

【函式的引數】

【位置引數】呼叫函式時,傳入的兩個值按照位置順序依次賦給引數xn

例如:用來計算xn次方

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允許你在listtuple前面加一個*號,把listtuple的元素變成可變引數傳進去:

>>> nums = [1, 2, 3]

>>> calc(*nums)

14

【關鍵字引數】

鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為一個dict

例如:

def person(name, age, **kw):

print('name:', name, 'age:', age, 'other:', kw)

  1. ···
  2. 讀寫

12

12