最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

花了2萬多買的Python教程全套,現(xiàn)在分享給大家,入門到精通(Python全棧

2023-03-16 15:28 作者:TonSilhouette  | 我要投稿

#思凡的筆記——Python

Last Update Date:2023-8-9

更新至:89P

前言:爭取簡約而精確,歡迎大家借鑒、監(jiān)督,共同進(jìn)步

  • Note1:該筆記為自用,按照自己的理解做了精簡,沒有太多解釋性語言,需要配合視頻使用;本人是英語專業(yè)大四學(xué)生,實習(xí)工作之余學(xué)習(xí)Python,更新也許會比較慢但不會放棄的!
  • Note2:最近在忙畢業(yè)論文中期答辯的事,每天工作之余要寫論文,Python的學(xué)習(xí)需要推后一陣了(5.15左右)。大家要堅持學(xué)哦,我們頂峰相見。
  • Note3:哈嘍,不知道有沒有今年上半年就關(guān)注了我的筆記的朋友,會偶然回看這篇已經(jīng)“停更”三個月的筆記,這段話是寫給你們的。停更這么久,是因為我畢業(yè)之后一直在找工作,因為不想從事英語相關(guān)職業(yè),就報了線下班在學(xué)習(xí)前端。所以,一是一周六天的課程和晚自習(xí)使我的時間精力難以繼續(xù)學(xué)習(xí)和更新Python(雖然這個理由對于想學(xué)習(xí)的人來說只是借口),二是決定要學(xué)前端之后,Python的知識就變得不那么重要了,我就失去了再學(xué)下去的動力。感謝一些網(wǎng)友對我的私信催促或者幾句關(guān)心,我也對一些力所能及的提問做了回復(fù)。希望僅存的這些拙作/筆記能夠在有限的范圍內(nèi)最大程度的幫助到大家,哈哈也許哪天我還是想重拾Python就學(xué)完了把筆記也補完了。最后,希望大家能夠想清楚自己想要的,堅持下去,每一個上進(jìn)的人都是可敬的。

print()函數(shù)

輸出:

①數(shù)字

②字符串(加引號)

③含運算符的表達(dá)式

轉(zhuǎn)義字符

反斜杠+想要實現(xiàn)的轉(zhuǎn)義功能首字母

①換行:\n (newline)

②回車:\r (return)

③水平制表符:\t (tab)——在不使用表格的情況下在垂直方向按列對齊文本。每8個字符可以看作一個水平制表符,如果遇到 \t 之前未滿8個字符,則 \t 就補空格直到滿8個

④退格:\b (backspace)

⑤原字符:r...(row)

常見的數(shù)據(jù)類型

1.整數(shù)類型-int (integer)-正數(shù)、負(fù)數(shù)和零

(十進(jìn)制——默認(rèn);

二進(jìn)制——以0b開頭;

八進(jìn)制——以0o開頭;

十六進(jìn)制——以0x開頭)

2.浮點數(shù)類型-float-整數(shù)、小數(shù)

3.布爾類型-bool-True, False

4.字符串類型-str (string)

運算符


一、算術(shù)運算符

1.標(biāo)準(zhǔn)算術(shù)運算符

加+、減-、乘*、除/、整除//(向下取整)

2.取余運算符

%(9%4=1)

3.冪運算符

**(2**3=23)


二、賦值運算符

1.=

支持鏈?zhǔn)劫x值(執(zhí)行順序:右到左)

支持系列解包賦值(a,b,c=10,20,30)

支持參數(shù)賦值(+=,-=,*=,/=,//=,%=)


三、比較運算符

1.<,>,<=,>=,!=

2.==

對象value的比較

3.is, is not

對象id的比較


四、布爾運算符

  • and, or, not, in,


五、位運算符

選擇結(jié)構(gòu)

一、單分支結(jié)構(gòu)

中文語義:如果……就……

語法結(jié)構(gòu):if?條件表達(dá)式:

??????????? 條件執(zhí)行體

money=1000

s=int(input('請輸入取款金額'))

if money>=s:

??money=money-s

??print('取款成功,余額為:',money)

else:

???print('取款失敗,余額不足')


二、雙分支結(jié)構(gòu)

中文語義:如果…不滿足…就

語法結(jié)構(gòu):if?條件表達(dá)式:

??????????? 條件執(zhí)行體1

???????? ?else:

??????????? 條件執(zhí)行體2


三、多分支結(jié)構(gòu)

  • 中文語義:……是……? 不是

????????? ……是……? 不是

????????? ……是……???不是

???????? ?……是……??是

  • 語法結(jié)構(gòu):

if??條件表達(dá)式1:

???條件執(zhí)行體1

elif 條件表達(dá)式2:

???條件執(zhí)行體2

elif 條件表達(dá)式N:

???條件執(zhí)行體N

else:

???條件執(zhí)行體N+1

score=float(input('請輸入一個成績'))

if score>=90 and score<=100:

??print('A')

elif score>=80 and score<90:

??print ('B')

elif score>=70 and score<80:

??print('C')

elif score>=60 and score<70:

??print('D')

elif score>=0 and score<60:

??print('E')

else:

??print('成績輸入有誤')


四、嵌套if的使用

  • 語法結(jié)構(gòu):

if 條件表達(dá)式1:

??if 內(nèi)層條件表達(dá)式:

???內(nèi)存條件執(zhí)行體1

??else:

???內(nèi)存條件執(zhí)行體2

else:

??條件執(zhí)行體

print('付款規(guī)則:'

???'會員購物金額200元及以上打八折,100元至200元打九折,低于100元不打折;'

???'非會員購物金額200元及以上打九五折,低于200元不打折')

answer=input('您是會員嗎?(是/否)')

money=float(input('請輸入您的購物金額:'))

if answer=='是':

??if money>=200:

?????print('打8折,付款金額為:',money*0.8)

??elif money>=100:

????print('打9折,付款金額為:',money*0.9)

??elif money<=0:

????print('金額輸入錯誤')

??else:

????print('不打折,付款金額為:',money)

else:

??if money>=200:

????print('打9.5折,付款金額為:',money*0.95)

??elif money <= 0:

????print('金額輸入錯誤')

??else:

????print('不打折,付款金額為',money)


五、Pass語句

  • 語句什么都不做,只是一個占位符,用在需要語句的地方
  • 配套使用:
  1. if 語句的條件執(zhí)行體
  2. for--in語句的循環(huán)體
  3. 定義函數(shù)的函數(shù)體

循環(huán)結(jié)構(gòu)

一、range函數(shù)的使用

  • 創(chuàng)建range()的三種方式

1.range(stop)——創(chuàng)建一個以[0,stop)之間的整數(shù)序列,步長為1

r=range(10)

print(list(r))?

2.range(start, stop)——創(chuàng)建一個(start, stop)之間的整數(shù)序列,步長為1

r=range(1, 10)

print(list(r))?

3.range(start, stop, step)——創(chuàng)建一個(start, stop)之間的整數(shù)序列,步長為step

r=range(1,10,2)

print(list(r))


二、while循環(huán)

  • 語法結(jié)構(gòu):?

while 條件表達(dá)式

????? 條件執(zhí)行體(循環(huán)體)

  • 四步循環(huán)法

①初始化變量

②條件判斷

③條件執(zhí)行體(循環(huán)體)

④改變變量

#計算0--4之間的累加和

sum=0?#初始變量為0

a=0?#條件判斷

while a<5:?#條件執(zhí)行體(循環(huán)體)

??sum+=a?#改變變量

??a+=1

print('和為',sum)


#1--100的偶數(shù)和

a=1

sum=0

while a<=100:

??if?a%2==0:

????sum+=a

??a+=1

print('1到100間偶數(shù)之和為',sum)


三、for_in循環(huán)

  • in 表達(dá)從(字符串、序列等)中依次取值,又稱遍歷
  • for--in 遍歷的對象必須是可迭代對象
  • 語法結(jié)構(gòu):

for 自定義的變量 in 可迭代對象

??? 循環(huán)體

#使用for循環(huán),計算1到100之間的偶數(shù)和

sum=0

for item in range(1,101):

???if item%2==0:

?????sum+=item

print(sum)


#100到999的水仙花數(shù)

for n in range(100,1000):

??sum=0

??for i in str(n):

????sum=sum+int(i)**3

??if sum==n:

????print(n)


四、流程控制語句break

非正常結(jié)束循環(huán)

for item in range(3):

??pwd=input('請輸入密碼:')

??if?pwd=='8888':

????print('密碼正確')

????break

??else:

????print('密碼不正確')


五、流程控制語句continue

用于結(jié)束當(dāng)前循環(huán),進(jìn)入下一次循環(huán),通常與分支結(jié)構(gòu)的if一起使用

#輸出1-50之間所有5的倍數(shù)

#使用for_in語句

for item in range(1,51):

??if item%5==0:

????print(item)

#使用continue語句

for item in range(1,51):

??if item%5!=0:

????continue

??print(item)


六、eles語句

if else ——if 條件不成立,執(zhí)行else

while else—— 沒有碰到break,執(zhí)行else

for else —— 沒有碰到break,執(zhí)行else

for item in range(3):

??pwd=input('請輸入密碼')

??if pwd=='8888':

????print('密碼正確')

????break

??else:

????print('密碼不正確')

else:

??print('對不起,三次密碼均輸入錯誤')


a=0

while a<3:

??pwd = input('請輸入密碼')

??if pwd == '8888':

????print('密碼正確')

????break

??else:

????print('密碼不正確')

??a+=1

else:

??print('對不起,三次密碼均輸入錯誤')


七、嵌套循環(huán)

循環(huán)結(jié)構(gòu)中又嵌套了另外的完整循環(huán)結(jié)構(gòu),其中內(nèi)層循環(huán)做為外層循環(huán)的循環(huán)體執(zhí)行

#輸出一個三行四列的矩形

for i in range(1,4): #行數(shù),執(zhí)行三次,一次一行

??for j in range(1,5):

????print('*',end='\t') #末尾換行改為水平制表符,避免換行

??print()?#打行

*9*9乘法表

for i in range(1,10): #行數(shù)

??for j in range(1,i+1):

????print(j,'*',i,'=',i*j,end='\t')

??print()


八、二重循環(huán)中的break和continue

用于控制本層循環(huán)

for i in range(5):

??for j in range(1,11):

????if j%2==0:

??????continue #從step1重新開始循環(huán)

????print(j,end='\t')

??print()

列表


一、列表對象的創(chuàng)建

  • 方法一:[ ]

lst1=['hello','world',98]

  • 方法二:使用內(nèi)置函數(shù)list

lst2=list(['hello','world',98])

  • 列表特點

①列表元素按順序有序排序

lst=['hello','world',98]

print(lst)

②索引映射唯一個數(shù)據(jù)

lst=['hello','world',98]

print(lst[0],lst[-3])

③列表可以存儲重復(fù)數(shù)據(jù)

lst=['hello','world',98,'hello']

print(lst[0],lst[-4])


二、列表的查詢操作

1.獲取列表中指定元素的索引——index()

  • 如查列表中存在N個相同元素,只返回相同元素中的第一個元素的指引
  • 如果查詢的元素不在列表中,會拋出ValueError
  • 可以在指定的start和stop之間查找

lst=['hello','world',98,'hello']

print(lst.index('hello',0,4))

2.獲取單個元素

  • 正向索引從0到N-1
  • 逆向索引從-N到-1
  • 指定索引不存在,拋出IndexError

3.獲取多個元素

  • 語法結(jié)構(gòu):

列表名[start:stop:step]


4.列表元素的判斷及遍歷

①判斷-語法結(jié)構(gòu):

元素 in/not in 列表名

lst=[10,20,'python','hello']

print(10 in lst)

print(100 in lst)

print(10 not in lst)

②遍歷-語法結(jié)構(gòu):

for 迭代變量 in 列表名

for item in lst:

??print(item)


三、列表元素的增加

1.append()

在列表的末尾添加一個元素

lst=[10,20,30]

print('添加元素之前',lst,id(lst))

lst.append(100)

print('添加元素之后',lst,id(lst))

2.extend()

在列表的末尾至少添加一個元素

lst2=['hello','world']

lst.extend(lst)

print(lst)

3.insert()

在列表的任意位置添加一個元素

lst.insert(1,90)

print(lst)

4.切片

在列表的任意位置至少添加一個元素

lst3=[True,False,'hello']

lst[1:]=lst3

print(lst)


四、列表元素的刪除

1.remove()

一次刪除一個元素,重復(fù)元素只刪除第一個

lst=[10,20,30,40,50,60,30]

lst.remove(30)

print(lst)

2.pop()

刪除一個指定索引位置上的元素,不指定索引則刪除列表最后一個元素

lst.pop(1)

print(lst)

3.切片

一次至少刪除一個元素(會產(chǎn)生一個新的列表對象)

new_list=lst[1:3]

print('原列表',lst)

print('切片后的列表',new_list)

4.clear()

清空列表

lst.clear()

print(lst)

5.del

刪除列表

del lst


五、列表元素的修改

1.為指定索引的元素賦予一個新值

lst=[10,20,30,40]

lst[2]=100

print(lst)

2.為指定的切片賦予一個新值

lst[1:3]=[300,400,500,600]

print(lst)


六、列表元素的排序

1.方法一:調(diào)用sort(),列中所有元素默認(rèn)按照從小到大順序(升序)排序,可以指定reverse=True進(jìn)行降序排序

lst=[20,40,10,98,54]

print('排序前的列表',lst)

#開始排序,默認(rèn)升序

lst.sort()

print('排序后的列表',lst,id(lst))


#通過指定關(guān)鍵字參數(shù),將列表元素降序排序

lst.sort(reverse=True) #T:降序;F:升序

print(lst)??

2.方法二:調(diào)用內(nèi)置函數(shù)sorted(),可以指定reverse=True進(jìn)行降序排序。該方法會產(chǎn)生新的列表對象,原列表不變

lst=[20,40,10,98,54]

print('原列表',lst)

#開始排序,默認(rèn)升序

new_list=sorted(lst)

print(lst)

print(new_list)


#通過指定關(guān)鍵字參數(shù),將列表元素降序排序

desc_list=sorted(lst,reverse=True)

print(desc_list)


七、列表生成式

  • 語法格式:

[i*i for i in range(1,10)]

(i*i→表示列元素的表達(dá)式

i→自定義變量

range(1,10)→可迭代對象)

lst=[i*2 for i in range(1,11)]

print(lst)

#輸出[2,4,6,8,10]

字典

  • 內(nèi)置數(shù)據(jù)結(jié)構(gòu)之一,與列表同屬可變序列;
  • 以鍵值對的方式存儲數(shù)據(jù),字典是無序序列

一、字典基礎(chǔ)操作

1.字典的創(chuàng)建

①大括號{}

scores={'張三':100,'李四':98,'王五':45}

②內(nèi)置函數(shù)dict()

scores=dict(name='jack',age=20)

2.字典中元素的獲取

[]

scores['張三']

print(scores['張三'])

(元素不存在將報錯)

get()

scores.get('張三')

print(scores.get('張三'))

(元素不存在將輸出None)

3.key的判斷

in

print('張三' in scores)

not in

print('張三' not in scores)

4.字典元素的新增/修改

scores['Jack']=90

5.字典元素的刪除

del scores['張三']


二、獲取字典視圖

1.keys()

  • 獲取字典中所有key

keys=scores.keys()

print(keys)

print(type(keys))

print(list(keys))

2.values()

  • 獲取字典中所有value

values=scores.values()

print(values)

print(type(values))

print(list(values))

3.items()

  • 獲取字典中所有key,value對

items=scores.items()

print(items)

print(list(items))


三、字典元素的遍歷

  • for item in scores:

print(item)

scores={'張三':100,'李四':98,'王五':45}

for item in scores:

??print(item,scores[item],scores.get(item))


四、字典生成式

  • 內(nèi)置函數(shù)zip()?
  • item.upper(): price for item,price in zip(items,prices)

items=['Fruits','Book','Others']

prices=[96,78,85]

d={item. upper():price for item, price in zip(items,prices)}

print(d)

元組

  • Python內(nèi)置的數(shù)據(jù)結(jié)構(gòu)之一,是一個不可變數(shù)列

一、元組創(chuàng)建方式

1.小括號()

t1=('Python','world',98)

print(t1)

print(type(t1))

2.內(nèi)置函數(shù)tuple()

t2=tuple(('Python','world',98))

print(t2)

print(type(t2))

  • 只包含一個元組的元素需要使用逗號和小括號,否則會被誤認(rèn)為int,str等類型

t3=('Python',)

print(t3)

print(type(t3))


二、元組對象是否可以引用

  • 若元組中的對象本身是不可變對象,則不能再引用其他對象
  • 若元組中的對象本身是可變對象,則可變對象的引用不允許改變,但數(shù)據(jù)可以改變

t=(10,[20,30],9)

print(t)

print(type(t))

print(t[0],type(t[0]),id(t[0]))

print(t[1],type(t[1]),id(t[1]))

print(t[2],type(t[2]),id(t[2]))

#[1]=100 報錯:SyntaxError: cannot assign to literal

t[1].append(100) #向列表中添加元素

print(t,id(t[1])) #列表內(nèi)存地址不變


三、元組的遍歷

1.方法一:索引

t=('Python','world',98)

'''第一種獲取元組元素的方式,索引'''

print(t[0])

print(t[1])

print(t[2])

#print(t[3]) IndexError: tuple index out of range

2.方法二:遍歷

'''第二種獲取元組元素的方式,遍歷元組'''

for item in t:

??print(item)

集合


一、集合的創(chuàng)建

1.使用{}

s={2,3,4,5,5,6,7,7}

print(s) #不允許重復(fù)

2.使用內(nèi)置函數(shù)set()

s1=set(range(6))

print(s1,type(s1))

s2=set([1,2,4,5,5,5,6,6])

print(s2,type(s2))

s3=set((1,2,4,4,5,65)) #集合中的元素是無序的

print(s3,type(s3))

s4=set('Python')

print(s4,type(s4))


二、集合基礎(chǔ)操作

1.判斷

①in/not in

s={10,20,30,405,60}

print(10 in s)

print(100 in s)

print(50 not in s)

2.新增

①add()

s.add(80)

print(s)

②update()

s.update({200,400,300})

print(s)

s.update([100,123,456])

s.update((12,52,48))

print(s)

3.刪除

①remove()

一次刪除一個指定元素,若指定元素不存在拋出KeyError

②discard()

一次刪除一個指定元素,若指定元素不存在不拋異常

③pop()

一次刪除一個任意元素

④clear()

清空集合


三、集合間關(guān)系判斷

1.是否相等

  • ==/!=

s={10,20,30,40}

s1={30,40,20,10}

print(s==s1) #True

print(s!=s1) #False

2.一個集合是否為另一個集合的子集

  • issubset

s1={10,20,30,40,50,60}

s2={10,20,30,40}

s3={10,20,90}

print(s2.issubset(s1)) #True

print(s3.issubset(s1)) #False

3.一個集合是否為另一個集合的超集(母集)

  • issuperset

print(s1.issuperset(s2)) #True

print(s1.issuperset(s3)) #False

4.兩個集合是否沒有交集

  • isdisjioint

print(s2.isdisjoint(s3)) #False

s4={100,200,300}

print(s2.isdisjoint(s4)) #True


四、集合的數(shù)學(xué)操作

  • 示意圖

1.交集

  • intersection / &

s1={10,20,30,40}

s2={20,30,40,50,60}

print(s1.intersection(s2))

print(s1 & s2)

2.并集

  • union / |

print(s1.union(s2))

print(s1 | s2) #union=|

print(s1)

print(s2)

3.差集

  • difference / -

print(s1.difference(s2))

print(s1-s2) #difference=-

print(s1)

print(s2)

4.對稱差集

  • symmetric_difference / ^

print(s1.symmetric_difference(s2))

print(s1^s2) #symmetric_difference=^


五、集合生成式

  • {i*i for i in range()}
  • 將列表生成式中的[]改為{}即可

#列表生成式

lst=[i*i for i in range(10)]

print(lst)

#集合生成式

lst={i*i for i in range(10)}

print(lst)

字符串



一、字符串的創(chuàng)建與滯留機制

  • 駐留機制的幾種情況:

1.字符串長度為0或1時

2.符合標(biāo)識符的字符串(字母、數(shù)字、下劃線)

3.字符串只在編譯時駐留,運行時不會

4.[-5,256]之間的整數(shù)數(shù)字


二、字符串常用操作

1.查詢

index()

查找子串substr第一次出現(xiàn)的位置,如果查找的子串不存在時,則拋出ValueError

s='hello,hello'

print(s.index('lo')) #3

print(s.find('lo')) #3

print(s.rindex('lo')) #9

print(s.rfind('lo')) #9

rindex()

查找子串substr最后一次出現(xiàn)的位置,如果查找的子串不存在時,則拋出ValueError

find()

查找子串substr第一次出現(xiàn)的位置,如果查找的子串不存在時,則返回-1

rfind()

查找子串substr最后一次出現(xiàn)的位置,如果查找的子串不存在時,則返回-1

2.大小寫轉(zhuǎn)換

upper()

把字符串中所有字符轉(zhuǎn)成大寫字母

s='hello,python'

a=s.upper() #轉(zhuǎn)成大寫后,會產(chǎn)生一個新的字符串對象

print(a,id(a))

print(s,id(s))

lower()

把字符串中所有字符轉(zhuǎn)成小寫字母

b=s.lower() #轉(zhuǎn)成小寫后,會產(chǎn)生一個新的字符串對象

print(b,id(b))

print(s,id(s))

print(b==s)

print(b is s) #False

swapcase()

把字符串中所有大寫字母轉(zhuǎn)成小寫字母,小寫字母轉(zhuǎn)成大寫字母

s2='hello,Python'

print(s2.swapcase())

capitalize()

把第一個字符轉(zhuǎn)換為大寫,把其余字符轉(zhuǎn)成小寫字母

print(s2.capitalize())

title()

把每個單詞的第一個字符轉(zhuǎn)換為大寫,把每個單詞的剩余字符轉(zhuǎn)換為小寫

print(s2.title())

3.對齊

center()

居中對齊,第一個參數(shù)指定寬度,第二個參數(shù)指定填充符,第二個參數(shù)可選,默認(rèn)空格,如果設(shè)置寬度小于實際寬度則返回原字符串

s='hello,Python'

print(s.center(20,'*'))

ljust()

左對齊,第一個參數(shù)指定寬度,第二個參數(shù)指定填充符,第二個參數(shù)可選,默認(rèn)空格,如果設(shè)置寬度小于實際寬度則返回原字符串

print(s.ljust(20,'*'))

print(s.ljust(10))

rjust()

右對齊,第一個參數(shù)指定寬度,第二個參數(shù)指定填充符,第二個參數(shù)可選,默認(rèn)空格,如果設(shè)置寬度小于實際寬度則返回原字符串

print(s.rjust(20,'*'))

print(s.rjust(10))

zfill()

右對齊,左邊用0填充,該方法只接收一個參數(shù),用于指定字符串的寬度,如果指定的寬度小于字符串的長度,則返回字符串本身

print(s.zfill(20))

print(s.zfill(10))

print('-8910'.zfill(8))

4.劈分

split()

  • 從字符串的左邊開始劈分,默認(rèn)的劈分字符是空格字符串,返回的值都是一個列表
  • 以通過參數(shù)sep指定劈分字符串是的劈分符
  • 通過參數(shù)maxsplit指定劈分字符串時的最大劈分次數(shù),在經(jīng)過最大次劈分之后,剩余的子串會單獨做為一部分

s='hello world Python'

lst=s.split()

print(lst) #未指定劈分字符,默認(rèn)空格

s1='hello|world|Python'

print(s1.split(sep='|'))

print(s1.split(sep='|',maxsplit=1))

rsplit()

  • 從字符串的右邊開始劈分,默認(rèn)的劈分字符是空格字符串,返回的值都是一個列表
  • 以通過參數(shù)sep指定劈分字符串是的劈分符
  • 通過參數(shù)maxsplit指定劈分字符串時的最大劈分次數(shù),在經(jīng)過最大次劈分之后,剩余的子串會單獨做為一部分

print(s.rsplit())

print(s1.rsplit(sep='|'))

print(s1.rsplit(sep='|',maxsplit=1)) #產(chǎn)生區(qū)別

5.判斷

isidentifier()

判斷指定的字符串是不是合法的標(biāo)識符

isspace()

判斷指定的字符串是否全部由空白字符組成(回車、換行,水平制表符)

isalpha()

判斷指定的字符串是否全部由字母組成

isdecimal()

判斷指定字符串是否全部由十進(jìn)制的數(shù)字組成

isnumeric()

判斷指定的字符串是否全部由數(shù)字組成

isalnum()

判斷指定字符串是否全部由字母和數(shù)字組成

6.替換

  • replace()

第1個參數(shù)指定被替換的子串,第2個參數(shù)指定替換子串的字符串,該方法返回替換后得到的字符串,替換前的字符串不發(fā)生變化,調(diào)用該方法時可以通過第3個參數(shù)指定最大替換次數(shù)

s='hello,Python'

print(s.replace('python','Java'))

s1='hello,Python,Python,Python'

print(s1.replace('Python','Java',2))

7.合并

  • join()

將列表或元組中的字符串合并成一個字符串

lst=['hello','java','Python']

print('|'.join(lst))

print(''.join(lst))


t=('hello','Java','Python')

print(''.join(t))

print('*'.join('Python'))


三、字符串的比較操作

  • 運算符:>,>=,<,<=,==,!=
  • 比較規(guī)則

首先比較兩個字符串中的第一個字符,如果相等則繼續(xù)比較下一個字符,依次比較下去,直到兩個字符串中的字符不相等時,其比較結(jié)果就是兩個字符串的比較結(jié)果,兩個字符串中的所有后續(xù)字符將不再被比較

  • 比較原理

兩上字符進(jìn)行比較時,比較的是其ordinal value(原始值),調(diào)用內(nèi)置函數(shù)ord可以得到指定字符的ordinal value。與內(nèi)置函數(shù)ord對應(yīng)的是內(nèi)置函數(shù)chr調(diào)用內(nèi)置函數(shù)chr時指定ordinal value可以得到其對應(yīng)的字符

print('apple'>'app')

print('apple'>'banana')

print(ord('a'),ord('b'))

print(chr(97),chr(98))


四、字符串的切片操作

  • 字符串是不可變類型;不具備增刪改等操作;切片操作將產(chǎn)生新的對象

s='hello,Python'

s1=s[:5] #未指定起始位置,從0開始切

s2=s[6:] #未指定結(jié)束位置,切到字符串最后一個元素

s3='!'

newstr=s1+s3+s2


print(s1)

print(s2)

print(newstr)

print(id(s))

print(id(s1))

print(id(s2))

print(id(newstr))


print(s[1:5:1]) #從1開始截到5(不含5),步長1(0→)

print(s[::-1]) #從字符串最后一個元素開始(←-1)


五、格式化字符串

1.%作占位符

name='張三'

age=20

print('我叫%s,今年%d歲' % (name,age))

2.{}作占位符

print('我叫{0},今年{1}歲'.format(name,age))

3.f-string

print(f'我叫{name},今年{age}歲')


print('%10d' % 99) #10表示的是寬度

print('%.3f' % 3.1415926) #.3表示的是精度(小數(shù)點后幾位)

print('%10.3f' % 3.1415926) #同時表示寬度和精度

print('{0:.3}'.format(3.1415926)) #此處.3表示一共三位有效數(shù)字

print('{0:.3f}'.format(3.1415926)) #此處,.3f表示小數(shù)點后三位

print('{:.3f}'.format(3.1415926)) #0表示占位符順序,可省略

六、字符串的編碼轉(zhuǎn)換

  • 編碼:將字符串轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)(bytes)
  • 解碼:將bytes類型的數(shù)據(jù)轉(zhuǎn)換成字符串類型

s='天涯共此時'

#編碼

print(s.encode(encoding='GBK')) #在GBK這種編碼格中,一個中文占兩個字節(jié)

print(s.encode(encoding='UTF-8')) #在UFT-8這種編碼格式中,一個中文占三個字節(jié)

#解碼

byte=s.encode(encoding='GBK')

print(byte.decode(encoding='GBK'))

函數(shù)

一、函數(shù)的創(chuàng)建與調(diào)用

1.創(chuàng)建

def 函數(shù)名([輸入?yún)?shù)])

??? 函數(shù)體

??? [return xxx]

2.調(diào)用

函數(shù)名([實際參數(shù)])

result=calc(10,20)

print(result)

def calc(a,b):

c=a+b

?? return c

result=calc(10,20)

print(result)


二、函數(shù)調(diào)用的參數(shù)傳遞

1.位置實參

根據(jù)形參對應(yīng)的位置進(jìn)行實參傳遞

def calc(a,b):?

#a,b稱為形式參數(shù),簡稱形參,位置在函數(shù)的定義處

??c=a+b

??return c


result=calc(10,20)?

#10,20稱為實際參數(shù)的值,簡稱實參,位置在函數(shù)的調(diào)用處

print(result)

2.關(guān)鍵字實參

根據(jù)形參名稱進(jìn)行實參傳遞

res=calc(b=10,a=20)

print(res)


三、函數(shù)參數(shù)傳遞的內(nèi)存分析

在函數(shù)調(diào)用過程中,進(jìn)行參數(shù)的傳遞:

  • 如果是不可變對象,在函數(shù)體的修改不會影響實參的值
  • 如果是可變對象,在函數(shù)體內(nèi)的修改會影響到實參的值

#函數(shù)的定義

def fun(arg1,arg2): #形參

??print('arg1=',arg1)

??print('arg2=',arg2)

??arg1=100

??arg2.append(10)

??print('arg1=',arg1)

??print('arg2=', arg2)


#函數(shù)的調(diào)用

n1=11?#實參

n2=[22,33,44]

fun(n1,n2) #位置傳參,形參與實參名稱不一致,按從左到右位置傳參


print('n1=',n1)

print('n2=',n2)






花了2萬多買的Python教程全套,現(xiàn)在分享給大家,入門到精通(Python全棧的評論 (共 條)

分享到微博請遵守國家法律
白银市| 遵义县| 吴江市| 息烽县| 冕宁县| 文山县| 湘阴县| 雅江县| 九龙县| 寻甸| 西贡区| 富蕴县| 东乌珠穆沁旗| 庆安县| 亳州市| 城口县| 积石山| 凌海市| 卢湾区| 灵宝市| 灵寿县| 上思县| 沧源| 泰兴市| 玉溪市| 襄垣县| 孝昌县| 淮安市| 康乐县| 醴陵市| 宁明县| 囊谦县| 义乌市| 进贤县| 叙永县| 镇远县| 廊坊市| 英吉沙县| 章丘市| 鄂托克前旗| 彰武县|