Python3文檔

命令模式C:\>(需要進(jìn)入相對(duì)路徑才不會(huì)報(bào)錯(cuò))

交互模式>>>

Python的文件后綴名必須以(file.py)結(jié)尾

? //直接運(yùn)行.py 文件,在Windows上是不行的,但是,在Mac和Linux上是可以的,方法是在.py文件的第一行加上一個(gè)特殊的注釋:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #!/usr/bin/env python3? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print('hello, world')

print()會(huì)依次打印每個(gè)字符串,遇到逗號(hào)“,”會(huì)輸出一個(gè)空格

print('100+200=',100+200)需要,隔開

語句塊一般為4個(gè)空格縮進(jìn)

\\表示的字符就是\

print('I\'m \"OK\"!')#后面有特殊字符,需要轉(zhuǎn)義符\

I'm "OK"!

?' 和"? 輸入字符串

'''多行'''? r對(duì)'''? '''沒有干擾

ord()函數(shù)獲取字符的整數(shù)表示,chr()函數(shù)把編碼轉(zhuǎn)換為對(duì)應(yīng)的字符

str='ABC' #字符串

x =b'ABC' #bytes

如果我們從網(wǎng)絡(luò)或磁盤上讀取了字節(jié)流,那么讀到的數(shù)據(jù)就是bytes。要把bytes變?yōu)閟tr,就需要用decode()方法:

len()#字符數(shù)

如果換成bytes,len()函數(shù)就計(jì)算字節(jié)數(shù):>>> len('中文'.encode('utf-8'))

6中文字符 -3個(gè)? ?英文字符-1個(gè)字節(jié)

Python文件開頭寫,注明編碼格式utf-8

#!/usr/bin/env python3

這行注釋是為了告訴Linux/OS X系統(tǒng),這是一個(gè)Python可執(zhí)行程序,Windows系統(tǒng)會(huì)忽略這個(gè)注釋;

# -*- coding: utf-8 -*-

第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會(huì)有亂碼。

>>> 'growth rate: %d %%' %7

growth rate: 7 %'

'Hello, %s成績提升了%.1f %%' %('小明', 13/75)

list:有序的集合

list是一種有序的集合,可以隨時(shí)添加和刪除其中的元素。

list=['li','liu','wang']

len(list)

list[0];list[-1]? ?indexError索引越界

有序添加list.append("san")集合的末尾

list.insert(2,"jack")#插入到指定位置

list.pop()刪除末尾元素

list.pop(i)刪除指定元素

list[2]="javah"#替換指定值

list=["xiao",123,["小明",12],true]

空的list,長度為0;list[]

tuple:?有序的元組

但是tuple一旦初始化就不能修改,沒有添加,替換,刪除元素操作,它更安全,

空的tuple()

一個(gè)tuple定義 tuple(1,)消除歧義;

tuple指向不變,指向一個(gè)list就不能改編成其他對(duì)象,但是指向的list本身是可以變得

p=("A","B",["x","y"],"C")

p[2][0]="M"

p[2][1]="D"

p=("A","B",["M","D"],"C")

L = [

['Apple','Google','Microsoft'] ,

['Java','Python','Ruby','PHP'] ,

['Adam','Bart','Lisa']

]

# 打印Apple:

print(L[0][0])

# 打印Python:

print(L[1][1])

# 打印Lisa:

print(L[2][2])

if條件判斷語句:elif是else if的縮寫,完全可以有多個(gè)elif,所以if語句的完整形式就是:

if<條件判斷1>:

? ? ? <執(zhí)行1>

elif<條件判斷2>:

? ? ? <執(zhí)行2>

elif<條件判斷3>:

? ? ? <執(zhí)行3>

else:

? ? ? <執(zhí)行4>

s=input('birth:')

birth:1989

>>> birth=int(s)

>>> if birth<2000:

...????print('00前')

... else :

...????print('00后')

空格特別重要,語句塊對(duì)整體規(guī)則

if語句執(zhí)行有個(gè)特點(diǎn),它是從上往下判斷,如果在某個(gè)判斷上是True,把該判斷對(duì)應(yīng)的語句執(zhí)行后,就忽略掉剩下的elif和else

簡寫

if x:

? ? print('True')

只要x是非零數(shù)值、非空字符串、非空list等,就判斷為True,否則為False。

invalid syntax#語法錯(cuò)誤

unexpected indent

1) 縮進(jìn)應(yīng)該是四個(gè)空格。if請(qǐng)頂格寫,if下面的兩行,行首四個(gè)空格。

2) age輸入是字符串類型,需要轉(zhuǎn)成整數(shù)才能比較大小

兩種循環(huán):

for x in range(i):

range(i)函數(shù):從0到i的所有數(shù)

break:

n =1

while n <=100:

? ? if n >10:? ? # 當(dāng)n = 11時(shí),條件滿足,執(zhí)行break語句

? ? ? ? ? break? ? # break語句會(huì)結(jié)束當(dāng)前循環(huán)

? ? ?print(n)?

? ? ? n = n +1

?print('END')

體重肥胖問題代碼:

bmi = weight/(height**2)

if bmi<18.5:

? ? print("過輕: %.1f" %bmi)

elif 18.5<=bmi<25:

? ? print("正常: %.1f" %bmi)

elif 25<=bmi<28:

? ? print("過重: %.1f" %bmi)

elif 28<=bmi<32:

? ? print("肥胖: %.1f" %bmi)

else :

? ? print("嚴(yán)重肥胖%.1f"%bmi)

coutinue

n =0

while n <10:?

? ? ?n = n +1

? ? if n %2==0:? ? # 如果n是偶數(shù),執(zhí)行continue語句

? ? ? ? continue? ? ? ? ?# continue語句會(huì)直接繼續(xù)下一輪循環(huán),后續(xù)的print()語句不會(huì)執(zhí)行

? ? print(n)

dict簡稱字典 相當(dāng)于 Map,是一個(gè)鍵值對(duì)

如果key不存在,dict就會(huì)報(bào)錯(cuò):通過in (key in d)

或者get()判斷 (d.get(key))可以返回None,交互界面不顯示或者? ?d.get(key,-1)不存在時(shí)反回-1。

pop(key)key和value同時(shí)刪除

和list比較,dict有以下幾個(gè)特點(diǎn):

查找和插入的速度極快,不會(huì)隨著key的增加而變慢;

需要占用大量的內(nèi)存,內(nèi)存浪費(fèi)多。

而list相反:

查找和插入的時(shí)間隨著元素的增加而增加;

占用空間小,浪費(fèi)內(nèi)存很少。

所以,dict是用空間來換取時(shí)間的一種方法。

dict的key必須是不可變對(duì)象

Set:無序且不重復(fù)的;

s = set([1,2,3])#里面是一個(gè)list集合[1,2,3];但輸出為{1,2,3}表示有這幾個(gè)元素

add(key)添加key

remove(key)刪除key

a.sort()#原地排序

>>> a ='abc'

>>> b = a.replace('a','A')

>>> b

'Abc'

>>> a

'abc'

a是變量,而'abc'才是字符串對(duì)象!有些時(shí)候,我們經(jīng)常說,對(duì)象a的內(nèi)容是'abc',但其實(shí)是指,a本身是一個(gè)變量,它指向的對(duì)象的內(nèi)容才是'abc':

當(dāng)我們調(diào)用a.replace('a', 'A')時(shí),實(shí)際上調(diào)用方法replace是作用在字符串對(duì)象'abc'上的,而這個(gè)方法雖然名字叫replace,但卻沒有改變字符串'abc'的內(nèi)容。相反,replace方法創(chuàng)建了一個(gè)新字符串'Abc'并返回,如果我們用變量b指向該新字符串,就容易理解了,變量a仍指向原有的字符串'abc',但變量b卻指向新字符串'Abc'了:

│ a ───────────────>│ 'abc' │

│ b │─────────────────>│ 'Abc' │

所以,對(duì)于不變對(duì)象來說,調(diào)用對(duì)象自身的任意方法,也不會(huì)改變?cè)搶?duì)象自身的內(nèi)容。相反,這些方法會(huì)創(chuàng)建新的對(duì)象并返回,這樣,就保證了不可變對(duì)象本身永遠(yuǎn)是不可變的。

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

定義函數(shù) def

def my-hanshu(x):

? ? if x>0 :

? ? ? ? return x

? ? else x<0:

? ? ? ? return -x

defnop():? ? #空函數(shù)

pass

參數(shù)個(gè)數(shù)不對(duì),并拋出TypeError錯(cuò)誤;

參數(shù)類型不對(duì),python無法檢查

數(shù)據(jù)類型檢查,用isinstance()實(shí)現(xiàn)

def my_bat(x):

if not isinstance(x(int,float)):

raise TypeError("bad? operand type")? ?#拋出異常

if x>=0:

? ? return x

else :

? ? return -x

調(diào)用my_bat('A')

打印Bad?operand type

>>> x, y = move(100,100,60, math.pi /6)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?>>> print(x, y)151.9615242270663270.0

>>> r = move(100,100,60, math.pi /6)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? >>> print(r)(151.96152422706632,70.0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?python 返回多值就是返回一個(gè)(r)tuple,將變量按位置賦給相對(duì)應(yīng)的值(x=r[1];y=r[2]);

import math? ? #求方程的解

def my_jie(a,b,c):

? ? m=b*b-4*a*c

? ? if m>=0:

? ? ? ? x=(-b+math.sqrt(m))/(2*a)

? ? ? ? y=(-b-math.sqrt(m))/(2*a)

return x,y

? ? else :

? ? ? ? print("無解")

位置參數(shù) power(x)

默認(rèn)參數(shù)power(x,n=2)? #而對(duì)于n > 2的其他情況,就必須明確地傳入n,比如power(5, 3)。

?定義默認(rèn)參數(shù)要牢記一點(diǎn):默認(rèn)參數(shù)必須指向不變對(duì)象!(str、None)

def add_end(L=None):

if L is None:?

?L = []?

?L.append('END')

return L

可變參數(shù):可變參數(shù)允許你傳入0個(gè)或任意個(gè)參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時(shí)自動(dòng)組裝為一個(gè)tuple

def? kebian(*numbers): #在參數(shù)前加*,在函數(shù)內(nèi)部,接收到的是一個(gè)Tuple

? ? sum=0

? ? for n in numbers:

? ? ? ? ?sum=sum+n*n

? ? return sum

kebian(1,2,3)

#如果已經(jīng)有一個(gè)Tuple或list,可以用’

num=[1,2,3]

kebian(*num)

關(guān)鍵字參數(shù):允許你傳入0個(gè)或任意個(gè)含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)dict

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

? ? print(name,age,kw)

>>>dirc={'city':'beijing','gender':'女'}

person(name,age,**dirc)

#**extra表示把extra這個(gè)dict的所有key-value用關(guān)鍵字參數(shù)傳入到函數(shù)的**kw參數(shù),kw將獲得一個(gè)dict,注意kw獲得的dict是extra的一份拷貝,對(duì)kw的改動(dòng)不會(huì)影響到函數(shù)外的extra。

命名關(guān)鍵字參數(shù):

定義:defperson(name, age, *, city, job):

? ? ? print(name, age, city, job)

默認(rèn)值:

def person(name,age,*,city='beijing',job):

? ? ? print(name,age,city,job)

調(diào)用及打?。?/b>

>>> person('Jack',24, job='Engineer')

Jack 24 Beijing? Engineer

參數(shù)組合:必選參數(shù)、默認(rèn)參數(shù)、可變參數(shù)、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)。

遞歸

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容