




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Python語言基礎(chǔ)
python規(guī)范
命名規(guī)則
1.必須以下劃線或字母開頭
2.前后單下劃線為系統(tǒng)變量
3.雙下劃線開頭為類的私有變量
4.關(guān)鍵字不能用作變量名
注釋
?單行注釋以#開頭
?多行注釋可用多個#或者用三引號(文檔注釋)
多行語句
?行尾使用反斜線(\)來續(xù)行
同一行寫多條語句
?語句間用分號(;)分隔
輸入輸出
輸出print()
?print默認(rèn)在末尾換行
a=1
b=2
c=3#直接輸出多個變量printQ,b,c)#輸出:123
#使用end參數(shù)用指定的字符替換末尾的換行符print(a,encF'@')#輸出:
#使用formatprint(5a=[}9.format(a))#輸出:
a=lprintCa={0},b={l},c{2}'.format(a,b,c))#輸出:a=l,b=2,c3
輸入input()
?input輸入的始終是字符串,需要轉(zhuǎn)換為其他數(shù)據(jù)類型使用
python數(shù)據(jù)類型
六個標(biāo)準(zhǔn)數(shù)據(jù)類型
1.Number(數(shù)字)
2.String(字符串)
3.List(列表)
4.Tuple(元組)
5.Sets(集合)
6.Dictionary(字典)
Number
?包括:int(整型)、float(浮點型)、bool(布爾型)、complex(復(fù)數(shù))、long(長
整型)
?清楚哪些值轉(zhuǎn)換為布爾類型后值是False
print(bool([]))#輸出:Falseprint(bool(''))#輸出:Falseprint(bool({}))
#輸出:Falseprint(bool(0))#輸出:False#注意下面兩個的區(qū)別
print(bool(0))#輸出:Falseprint(boolCO'))#輸出:True
?浮點數(shù)的內(nèi)置函數(shù)運(yùn)算會有誤差,也就是小數(shù)的精度問題
String
字符串屬于序列,除此之外還有:元組、列表(集合和字典不是序列類型)
單引號和雙引號可以互換,也可以互嵌
三引號表示多行字符串(也可以作為文檔注釋)
另外:三引號內(nèi)可以直接使用回車、制表符,可以不使用轉(zhuǎn)移字符
來表示
字符串常用操作
連接和重復(fù)
print('hello**3,'wor,+'ld')#輸出:hellohellohelloworld
字符串的切片(左閉右開)
word=5helloworId*print(word[0:5])#輸出:helloprint(word[:5])#輸
出:helloprint(word[l:])#輸出:elloworldprint(word[:])#輸出:hello
worldprint(word[0:5:2])#輸出:hloprint(word[2:-2])#輸出:Ho
worprint(word[-2:2])#輸出空串
轉(zhuǎn)義字符
?要注意這種復(fù)雜的轉(zhuǎn)義字符一起輸出
在字符串內(nèi)的〃\r〃、八t〃、〃\n〃等字符,會轉(zhuǎn)換為空白字符(回車符、水平制表符、
換行符……)
printf('helloXtworld*)#輸出:helloworld
Raw字符串(字符串內(nèi)不轉(zhuǎn)義)
字符串前綴為'R'或Y
print(r'hello\tworldz)#輸出:hello\tworld
變量及其賦值
簡單賦值
a=1
?多目標(biāo)賦值
a=b=c=l#這種情況下a、b>c都是引用同一個變量
?這樣會報錯
a=(b=c=l)a=(b=l)
序列賦值
?左邊是元組、列表表示的多個變量,右側(cè)是元組、列表或字符串等序列表示的值。
?序列元素個數(shù)必須和變量個數(shù)相等,否則會出錯
?在變量名前使用"*"創(chuàng)建初表對象引用
a,b=1,2#省略括號的元組賦值(c,d)=(2,3)#元組賦值[e,f]=[4,,5,]
#列表賦值(g,h)=廠6,,7]#元組和列表可以交叉賦值(x,y,z)=,abc,#
字符串賦值,x='a',y='b',z='c'(i,j)=(8,9,10)#這是錯誤的,變量
和值的個數(shù)必須相等
?在變量名前使用"*"創(chuàng)建列表對彖引府
X,'abed'print(x,y)#輸出:a['b','c','d']
運(yùn)算符和表達(dá)式
?包括:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、字符串運(yùn)算符、邏輯運(yùn)算符。
算術(shù)運(yùn)算符和表達(dá)式
算術(shù)運(yùn)算符包括:加(+)、減(-)、乘(*)、除(/)、取余(%)、
整除(〃)、幕運(yùn)算(**)
a+=l和a=a+l等價,a-=l、a//=2等也類似
要注意這種復(fù)雜的表達(dá)式的運(yùn)算優(yōu)先級
int(8*math.sqrt(36)*10**(-2)*10+0.5)/10
運(yùn)算順序如下:
int(8*6*10**(-2)*10+0.5)/10
10**(2)=0.01
8*6=48
int(48*0.01*10+0.5)/10
int(5.3)/10
5/10
0.5
邏輯運(yùn)算符
?and(邏輯與),or(邏輯或),not(邏輯非)
關(guān)系運(yùn)算符
?==(等于)、!=(不等于)、<>(不等于)、>(大于)、<(小于)、>=(大于
等于)、<=(小于等于)
運(yùn)算符的優(yōu)先級
?最高優(yōu)先級的三個運(yùn)算符(優(yōu)先級由高到低):**暴運(yùn)算、~安位取反、-負(fù)號
?最低優(yōu)先級的幾個運(yùn)算符(優(yōu)先級由高到低):I按位或、<><=>===!=關(guān)
系運(yùn)算符、notandor邏輯運(yùn)算符
字符串運(yùn)算符
下面這些運(yùn)算對于列表、元組都有效(因為它們同屬序列類型)
字符串連接(+)
print(1a1+1b1)#輸出:ab
重復(fù)字符串(*)
print(*3**3)#輸出:aaa
索引字符串(口)
a=1hello*;print(a[1]);#輸出:e
截取字符串([:])
print(a[1:4])#輸出:ell
成員運(yùn)算符(in)
print(*e*ina)#輸出:True
成員運(yùn)算符(notin)
print(*e1notina)#輸出:False
Raw字符串(r/R)
print(R^eXtllo1)#輸出:hello\nllo
格式字符串(%)
11111
print(hello%s%s%(worr,Id))#輸出:helloworld
格式化
%c(轉(zhuǎn)換為字符)
print('%c'%('hello'))#報錯,必須是ASCII碼值或者一個字符,否則會出錯
%r(使用repr()進(jìn)行字符串轉(zhuǎn)換)
print('%r,%('hello'))#輸出:'hello'
%s(使用str()進(jìn)行字符串轉(zhuǎn)換)
print('%s'%('hello'))#輸出:hello
,format()格式化
print('a={}'.format('a'))#輸出:a=a
repr()函數(shù)和str()函數(shù)的區(qū)別就在于接受值和返回值不同
repr()函數(shù)和str()函數(shù),分別會調(diào)用輸入對象的_repr_()、_str_()
特殊方法
%d或%i(轉(zhuǎn)換為有符號十進(jìn)制數(shù))
print('%dz%(-10))#輸出:-10
%u(轉(zhuǎn)換為無符號十進(jìn)制數(shù))
print('%u'%(-10))#輸出:-10
有無符號是指在二進(jìn)制下,最高位用來表示實際的數(shù)或是單純表示正負(fù)
%o(轉(zhuǎn)換為無符號八進(jìn)制數(shù))
print('%o,%(100))#輸出:144
%x或%X(轉(zhuǎn)換為無符號十六進(jìn)制數(shù))
print('%x'%(100))#輸出:64
%e或%E(轉(zhuǎn)換成科學(xué)計數(shù)法)
print('%e,%(1000))#輸出:1.000000e+03
%f或%F
print('%f,%(100)#輸出:100.000000)
格式化操作輔助符
print(,開始%10.2£結(jié)束,%(7.2222))#輸出:開始7.22
%10.2f表示:最小總長度為10,不足用前導(dǎo)空格補(bǔ)齊,長度大于
等于10則正常顯示(這里的長度不包括小數(shù)點)
位運(yùn)算符
.異或:二進(jìn)制數(shù)逐位對比相同為0,不同為1
10"2==81010異或0010結(jié)果為:1000
運(yùn)算符說明
&按位與
I按位或
-按位異或
按位去反
?按位左移
?按位右移
python常用函數(shù)
數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
重點掌握加粗的函數(shù)
函數(shù)名說明
int(str)將字符串str轉(zhuǎn)換為<u>整數(shù)</u>
long(str)將字符串str轉(zhuǎn)換為<u>長整型整數(shù)</u>
float(str)將字符串str轉(zhuǎn)換為<u>浮點數(shù)</u>
eval(str)將字符串str轉(zhuǎn)換為<u>有效表達(dá)式</u>并返回表達(dá)式計算后的對象
str(x)將數(shù)值X轉(zhuǎn)換為<u>字符串</u>
repr(obj)將<u>對象</u〉obj轉(zhuǎn)換為一個<u>字符串</u>
chr(x)將整數(shù)x轉(zhuǎn)換為對應(yīng)的(u>ASCH字符</u>
ord(x)將字符x轉(zhuǎn)換為對應(yīng)的<u>ASCII碼</u>
hex(x)將一個整數(shù)x轉(zhuǎn)換為一個<u>十六進(jìn)制字符串</u>
oct(x)將一個整數(shù)x轉(zhuǎn)換為一個<u>八進(jìn)制字符串《/u〉
tuple(squ)將一個序列squ轉(zhuǎn)換為一個<u>元組</u>
list(squ)將一個序列squ轉(zhuǎn)換為<u>列表</u>
set(squ)將一個序列squ轉(zhuǎn)換為可變<u>集合</u>
diet(squ)創(chuàng)建一個〈U〉字典《/u〉,squ是一個序列(key,value)元組
len(obj)返回對象的長度(字符個數(shù)、列表元素個數(shù)、字典key個數(shù))
數(shù)學(xué)函數(shù)
函數(shù)名說明
abs(x)返回數(shù)值x的絕對值
exp(x)返回e的x次累
函數(shù)名說明
fabs(x)返回數(shù)字的絕對值
loglO(x)返回以10為底的x的對數(shù)
pow(x,y)返回x的y次幕
floor(x)x向下取整(小于等于X)
ceil(x)X向上取整(大于等于X)
fmod(x,y)求x/y的余數(shù)
sin(x)cos(x)...返回x的三角函數(shù)值
python數(shù)據(jù)結(jié)構(gòu)
?python常用三種數(shù)據(jù)結(jié)構(gòu):序列、映射、集合
?列表和元組有什么相同點和不同點?(后面會給出解釋)
字符串
字符串是不可變的序列,不可以通過str[n]=chr來改變字符串
字符串的切片(左閉右開)
word=?helloworld,print(word[0:5])#輸出:helloprint(wordL:5])#輸
出:helloprint(word[l:])#輸出:elloworldprint(word[:])#輸出:hello
worldprint(word[0:5:2])#輸出:hloprint(word[2:-2])#輸出:Ho
worprint(word[-2:2])#輸出空串
字符串轉(zhuǎn)列表
?可以通過list。函數(shù)直接將字符串中的每個字符轉(zhuǎn)換為一個列表元素,也可以通過
split。方法根據(jù)指定的分割符分割元素(默認(rèn)以空格分割)。
word='helloworld'print(list(word))#輸出:「h',e','1',T','o',
'w'o'r'1'd'[print(word,split())#輸出:['hello',
'world,]
列表轉(zhuǎn)字符串
?可以通過“Join()方法將字符串列表連接起來形成一個新的字符串
word=L「,h1,,,e,,,1,,,1,,,o,1J
words=??.join(word)print(words)#輸出:hello
字符串查找
?可以通過in關(guān)鍵字查找也可以通過字符串的find。方法,in關(guān)鍵字返回True或False,
find。方法返回查找字符串的開始下標(biāo)或-1,通過index。方法查找當(dāng)沒有查找到時會
報錯.
word="helloworld'printCllo'inword)#輸出:
Trueprint(word.find(,llo"))#輸出:2print('ok'inword)#輸出:
Falseprint(word,findC0k,))#輸出:-Iprint(word,index(Jok1))#報錯
#帶開始和結(jié)束范圍的查找print(word.find('llo',5,-l))#輸出:
Tprint(word,index('11。',0,5))#輸出:2
字符串替換
?replace。方法替換指定的字符串
strl='helloworld,print(strl.replaceCworld",*yznu,))#輸出:hello
yznu
#指定參數(shù)來限制替換的次數(shù),不指定參數(shù)默認(rèn)替換所有匹配的字符串#可以看
到下面的語句只替換了一個Iprint(strl.replace('1','yes,,1))#輸出:he
yesloworld
列表
列表的表示方法
?[1,2,3,4]
創(chuàng)建列表
?創(chuàng)建空列表、列表生成式、元組和字符串轉(zhuǎn)列表
#創(chuàng)建一個空列表
1st=[]
#直接將列表賦值給變量
t,h1,,,e,,,1,,,1,,,o,1J
#元組轉(zhuǎn)列表
1st=list((l,2,3,4))print(ist)#輸出:[1,2,3,4]
#字符串轉(zhuǎn)列表
1st=list(*hello")print(1st)#輸出:[,h,e,
#字符串分割成列表
1st='helloworld'.split()print(1st)#輸出:['hello',"world)]
#range。生成列表
1st=list(ranged,6))print(1st)#輸出:[1,2,3,4,5]
#列表生成式
1st=[x**2forxinrange(1,6)]print(1st)#輸出:[1,4,9,16,25]
#復(fù)雜列表生成式子
1st=[xforxin1stifx>landx<25]print(1st)#輸出:[4,9,16]
列表元素刪除
?del()zpop(),remove()
#del語句刪除
1st=[1,2,3,4,5,6]del(1st[5])print(1st)#輸出:[1,2,3,4,5]
#pop方法刪除并返回指定下標(biāo)的元素print(1st.pop(4))#輸出:Sprint(1st)
#輸出:[1,2,3,4]
#remove方法刪除列表中的首次出現(xiàn)的某個值
1st.remove(4)print(1st)#輸出:[1,2,3]
列表分片
?使用[:]對列表分片和對字符串分片相同,列表還能分片賦值
#列表分片賦值
1st=[1,2,3,4,5]
lst[l:4]=[0,0,0]#切片個數(shù)和賦值個數(shù)一樣,否則報錯print(1st)#輸
出:[1,0,0,0,5]
字符串轉(zhuǎn)列表和列表轉(zhuǎn)字符串
?在上面字符串那一節(jié)已經(jīng)寫過,不再贅述,回到那里去看即可
列表常用的函數(shù)和方法
?append。,count。,extend。,index。,sort。,len()
?注意區(qū)別extend。和append。的用法
?注意區(qū)別sort。和sorted。的用法
?count。是非遞歸的統(tǒng)計一個元素出現(xiàn)的次數(shù),也就是不會深入第二層
函數(shù)和方法說明
.append()末尾追加一個元素(與.extend有何不同?)
.count()統(tǒng)計某元素出現(xiàn)的次數(shù)(非遞歸式)
.extend()以另一個序列的元素值去擴(kuò)充原列表
.insert()在指定下標(biāo)處插入一個元素
.pop()刪除指定下標(biāo)的元素并返回該元素
.reverse()翻轉(zhuǎn)列表
函數(shù)和方法說明
.sort()對列表進(jìn)行排序(與sorted函數(shù)有何不同?)
.index()找到指定值第一次出現(xiàn)的下標(biāo)(找不到報錯)
.remove()移除在列表中第一次出現(xiàn)的指定的值
len()返回列表的元素個數(shù)
max()返回最大值
minO返回最小值
1st=[1,3,4,5]#append向列表中添加一個元素
1st.append([6,7])print(1st)#輸出:[1,3,4,5,[6,7]]
#extend用序列擴(kuò)充列表
1st.extend([8,9,10])print(1st)#輸出:[1,3,4,5,[6,7],8,9,10]
#insert方法在指定下標(biāo)處插入一個值
1st.insert(1,2)print(1st)#輸出:[1,2,3,4,5,[6,7],8,9,10]
#count統(tǒng)計一個元素在列表中出現(xiàn)的次數(shù)
1st=[1,[2,3],2,3]print(1st.count(2))#輸出:1
元組
?元組的元素定義后不能修改
元組的表示方法
?(1,2,3,4)
元組的創(chuàng)建
?創(chuàng)建空元組、列表和字符串轉(zhuǎn)元組
?元組不能直接使用列表的方法排序(因為不可修改)
#創(chuàng)建一個空元組
tup=()
#直接將元組賦值給變量
tup=(1,2,3)
#列表轉(zhuǎn)元組
tup=tuple([l,2,3])#輸出:(1,2,3)print(tup)
#字符串轉(zhuǎn)元組
tup=tupleChello')print(tup)#輸出:('h','e','1','1','o')
元組和列表的相同點和不同點
1.相同點
O元組和列表都屬于序列
O元組和列表都支持相同操作符,包括+(連接)、*(重復(fù))、口索引、[:]
切片、in、notin等
2.不同點
。元組是不可變的對象
o對列表進(jìn)行的修改元素的操作,在元組上不可以(列如del刪除一個元組中
的元素會出錯,只能將整個元組刪掉,不能只刪某個元素)
字典
?字典是映射類型
?字典的key值必須是可哈希的(也可以說是不可修改的)
字典的表示方法
?{key:value,key:value}{*name*:*alien1,*age*:18}
創(chuàng)建字典
?創(chuàng)建空字典(使用空大括號默認(rèn)創(chuàng)建字典,集合使用set())
?fromkeys。創(chuàng)建字典、dict()創(chuàng)建字典
#創(chuàng)建一個空字典
dictl={}
#直接將字典賦值給變量
dictl={'one':1,'two':2,'three':3}print(dictl)#輸出:{'one':1,
'two':2,'three,:3}
#diet創(chuàng)建字典(對比下面幾種創(chuàng)建字典的形式吧)
#方式1
dictl=diet(one=l,two=2,three=3)#這樣創(chuàng)建字典,key不加引號
print(dictl)#輸出:{‘one':1,‘two':2,'three':3}
#方式2
temp=[Ctwo',2),('one',1),('three',3)]
dictl=diet(temp)print(dictl)#輸出:{'two':2,'one':1,'three':3}
#方式3
temp=[[,two,,2],one,,1],['three',3]]
dictl=diet(temp)print(dictl)#輸出:{'two':2,‘one':1,'three':3}
#方式4
temp=(['two',2],[?one,,1],['three',3])
dictl=diet(temp)print(dictl)#輸出:{'two':2,'one':1,'three':3}
#使用fromkeys創(chuàng)建字典
subject=['Python','操作系統(tǒng)','計算機(jī)網(wǎng)絡(luò)']
scores=diet,fromkeys(subject,99)print(scores)#輸出:{*Python':99,
‘操作系統(tǒng)':99,'計算機(jī)網(wǎng)絡(luò)’:99}
字典常用函數(shù)和方法
?diet。,values。,keys。,get(),clear。,pop(),in(),update。,copy。
?注意區(qū)別get()和直接訪問字典元素的區(qū)別
scores={'Python':99,,操作系統(tǒng)':99,,計算機(jī)網(wǎng)絡(luò)’:99}
#print(socores['大學(xué)英語'])#這會報錯,因為不存在‘大學(xué)英語'這個鍵
print(scores.get('大學(xué)英語'))#輸出:None
#values返回字典的所有值print(scores.values0)#輸出:dict_values([99,
99,99])
#keys返回字典的所有鍵print(scores,keys0)#輸出:dict_keys([,Python',
'操作系統(tǒng)','計算機(jī)網(wǎng)絡(luò)'])
#items返回字典的所有鍵和值print(scores.items())#輸出:
dict_items([CPython,,99),('操作系統(tǒng)',99),('計算機(jī)網(wǎng)絡(luò)',99)])
#使用keys遍歷forkinscores,keys():
print(k,end=,');#輸出:Python操作系統(tǒng)計算機(jī)網(wǎng)絡(luò)
#使用values遍歷forvinscores,values():
print(v,end=');#輸出:999999
#使用items遍歷fork,vinscores,items():
print(k,v,end=,;');#輸出:Python99;操作系統(tǒng)99;計算機(jī)網(wǎng)絡(luò)99;
#in查詢一?個字典中是否包含指定鍵print('Python'inscores)#輸出:
Trueprint('數(shù)據(jù)結(jié)構(gòu)'inscores)#輸出:False
#update更新字典,如果包含相同的鍵將會覆蓋原來的對應(yīng)的那個鍵值
dicti={'語文':90,'數(shù)學(xué)':91}
scores,update(dicti)print(scores)#輸出:{'Python':99,'操作系統(tǒng)':99,
'計算機(jī)網(wǎng)絡(luò)’:99,‘語文‘:90,‘?dāng)?shù)學(xué)':91}
#刪除字典元素del(scores['語文'])print(scores)#輸出:{'Python':99,
'操作系統(tǒng)':99,'計算機(jī)網(wǎng)絡(luò)99,‘?dāng)?shù)學(xué)':91}
scores,pop('數(shù)學(xué)')print(scores)#輸出:{,Python,:99,'操作系統(tǒng)’:99,
'計算機(jī)網(wǎng)絡(luò)’:99)
#清空字典
scores,clear()print(scores)#輸出:{}
拿
果Aa
?集合的元素不會有重復(fù),利用這個特性編程題中可以去重
?集合內(nèi)的元素只能是可哈希的數(shù)據(jù)類型(也可以說是不可修改的),無法存儲列表、
字典、集合這些可變的數(shù)據(jù)類型
集合是無序的,所以每次輸出時元素的排序順序可能都不相同
創(chuàng)建集合
?創(chuàng)建空集合不能直接用大括號,大括號默認(rèn)創(chuàng)建空字典
?將序列轉(zhuǎn)為集合
#創(chuàng)建一個空集合不能直接用大括號
setl=set0
#將集合直接賦值給變量
setl={'Python'計算機(jī)網(wǎng)絡(luò)','操作系統(tǒng)'}print(setl)#輸出:{'操作系
統(tǒng)’計算機(jī)網(wǎng)絡(luò)‘,’Python'}
#列表轉(zhuǎn)集合
setl=set(['操作系統(tǒng)','計算機(jī)網(wǎng)絡(luò)','Python','操作系統(tǒng)'])print(setl)
#輸出:{'Python','計算機(jī)網(wǎng)絡(luò)‘,'操作系統(tǒng)'}
首字符串轉(zhuǎn)集合
setl=set('操作系統(tǒng)')print(setl)#輸出:{'系','作','操','統(tǒng)'}
集合的一些操作
setl={'Python'計算機(jī)網(wǎng)絡(luò)‘,’操作系統(tǒng)')
set2=set(['語文’,'操作系統(tǒng)‘,’計算機(jī)網(wǎng)絡(luò)'])#集合中沒有+的操作#
print(setl+set2)#這樣會出錯
#差集(setl有但是set沒有的元素)print(setl-set2)it輸出:{'Python'}
#交集(setl和set2都有的元素)print(setl&set2)#輸出:{'操作系統(tǒng)
','計算機(jī)網(wǎng)絡(luò)'}
#并集(setl和set2所有的元素)print(setl&set2)#輸出:{‘語文','
操作系統(tǒng)‘,’計算機(jī)網(wǎng)絡(luò)','Python'}
#不同時包含于a和b的元素print(setl?set2)
集合的常用方法
?set(),add(),update(),remove()
?集合不支持用del()刪除一個元素
setl=set(['操作系統(tǒng)','計算機(jī)網(wǎng)絡(luò)',》丫世。不,‘操作系統(tǒng)'])
#add向集合中添加一個元素
setLadd('語文')print(setl)#輸出:{‘語文',’計算機(jī)網(wǎng)絡(luò)','操作系統(tǒng)',
'Python'}
#remove刪除集合中一個元素
setl.remove('語文')print(setl)#輸出:{'Python'操作系統(tǒng)','計算機(jī)
網(wǎng)絡(luò)'}
程序流程控制(記得語句后面的冒號:)
?程序流程控制一定要注意語句后面的冒號和語句塊之間的縮進(jìn)
分支選擇
單分支
多分支
elif:
else:
程序例子
#判斷一個人的身材是否正常
height=float(input(〃輸入身高(米):〃))
weight=float(input(〃輸入體重(千克):〃))
bmi=weight/(height*height)#計算BMI指數(shù)
if5:
print(〃BMI指數(shù)為:〃+str(bmi))
print(〃體重過輕〃)elifbmi>=18.5andbmi<24.9:
print(,ZBMI指數(shù)為:〃+str(bmi))
print(〃正常范圍,注意保持〃)elifbmi>=24.9andbmi<29.9:
print(〃BMI指數(shù)為:〃+str(bmi))
print(〃體重過重〃)else:
print(Z,BMI指數(shù)為:〃+str(bmi))
print(〃肥胖〃)
#輸入身高(米):L7#輸入體重(千克):55#BMI指數(shù)為:19.031141868512112#
正常范圍,注意保持
三目運(yùn)算
?max=aifa>belsebif為真max=a,否則max二b
a=int(input('請輸入a:'))#假設(shè)輸入10
b=int(input('請輸入b:'))#假設(shè)輸入15ifa>b:
max=aelse:
max=bprint(max)#輸出:15
max=aifa>belsebprint(max)#輸出:15
循環(huán)結(jié)構(gòu)
while循環(huán)
?while循環(huán)的格式
#循環(huán)的初始化條件
num=1#當(dāng)num小于100時,會一直執(zhí)行循環(huán)體whilenum<=100:
print("num=",num)
#迭代語句
num+=Iprint("循環(huán)結(jié)束!”)
for循環(huán)
?for循環(huán)的格式
?for循環(huán)遍歷字典、集合、列表、字符串、元組
subjects=['Python','操作系統(tǒng)‘,'網(wǎng)絡(luò)']#循環(huán)遍歷列表Iforiin
subjects:
print(i,end=,')#輸出:Python操作系統(tǒng)網(wǎng)絡(luò)print('')#循環(huán)遍歷
歹表2foriinrange(len(subjects)):
print(subjects[i],end=,()#輸出:Python操作系統(tǒng)網(wǎng)絡(luò)printC')#
遍歷字符串,元組也類似,就不寫了#循環(huán)遍歷列表1這種形式也可以用于字
典、集合,但循環(huán)遍歷列表2這種形式不行
#集合不能使用索引(因為它是無序的),所以使用set[i]這種形式輸出會報
錯#字典必須用鍵去索引值,dict[key]這種形式
?列表生成式
?range。函數(shù)與for循環(huán)的使用
range函數(shù)的格式如下:
range(start,end,step)
start:計數(shù)從start開始。默認(rèn)是從0開始。例如range(5)等
價于range(0,5)
end:計數(shù)到end結(jié)束,但不包括end例如:range(0,5)是0,
1,2,3,4沒有5
step:步長,默認(rèn)為1。例如:range(0,5)等價于range(0,
5,1)
#列表生成式
1st=[xforxinrange(2,11,2)]print(1st)#輸出:⑵4,6,8,10]
1st=[x*2forxinrange(2,11,2)]print(1st)#輸出:[4,8,12,16,20]
#直接循環(huán)range函數(shù)foriinrange(2,11,2):
print(i,end=,')#輸出:246810print(J')
foriinrange(11):
print(i,end=')#輸出:012345678910printC')
break和continue關(guān)鍵字
#輸出-50之間的偶數(shù)#循環(huán)的初始化條件
num=1whilenum<=100:
if(num>50):#當(dāng)num>50跳出循環(huán)
break
if(num%2!=0):#num為奇數(shù)跳過輸出,直接加一進(jìn)入下一次循環(huán)
num+=1
continue
print(z/num=z/,num)
#迭代語句
num+=Iprint("循環(huán)結(jié)束!”)
Python函數(shù)和模塊
函數(shù)
函數(shù)的定義
def函數(shù)名():
函數(shù)體
return語句
?return語句可以沒有
?函數(shù)的嵌套定義,python函數(shù)內(nèi)是可以定義函數(shù)的
函數(shù)的參數(shù)
默認(rèn)參數(shù)
?默認(rèn)參數(shù)應(yīng)該放在必須參數(shù)后面,類似這樣def(azbzc=l):
可變參數(shù)
?形參定義形式為*second,second會在函數(shù)中被解析為一個元組
#可變參數(shù)Idefprint_str(first,*second):#first必須要指定一個參數(shù),
second可以指定0個或多個參數(shù)
print(first,end='')
print(second)
print_str(?hello,)#輸出:hello()
print_str(,hello,,?world,)#輸出:hello('world',)
print_str('hello'world'yznu')#輸出:hello('world','yznu')
?形參定義形式為"anything,anything會被解析為一個字典
#可變參數(shù)數(shù)efprintStr(^anything):
print(anything)
printStr(python=99,操作系統(tǒng)=99)#輸出:{'Python':99,'操作系統(tǒng)':
99)
變量的作用范圍
?局部變量和全局變量的定義
?函數(shù)外不能訪問函數(shù)內(nèi)的變量
?全局變量和局部變量同名,默認(rèn)訪問局部變量
?在函數(shù)內(nèi)要想改變函數(shù)外的變量需要用global關(guān)鍵字
#函數(shù)外部不能訪問函數(shù)內(nèi)的變量(局部變量)defdemo(name):
Stri='hello'#局部變量
print(strl,name)
demoCsir,)#輸出:hellosir
#print(strl)#訪問函數(shù)內(nèi)的局部變量會出錯#print(name)#訪問函數(shù)內(nèi)的
局部變量會出錯
#全局變量和局部變量同名,默認(rèn)訪問局部變量
strl='hi'#全局變量defdemo(name):
strl='hello'#局部變量
print(strl,name)
demoCsir')#輸出:hellosirprint(sti)#輸出:hi
#在函數(shù)內(nèi)要想改變函數(shù)外的變量需要用global關(guān)鍵字
strl='hi'#全局變量defdemo(name):
globalstrl#下面,對strl的修改會影響到函數(shù)外部的全局變量strl
strl='hello'#局部變量
print(strl,name)
demo('sir')#輸出:hellosirprint(sti)#輸出:hello
python模塊
?Python模塊就是一個Python文件,以.py結(jié)尾,包含了Python對象定義和
Python語句。
python模塊的幾種導(dǎo)入方法
1.import模塊1,模塊2(導(dǎo)入一個或多個模塊)
2.from模塊import函數(shù)或類(導(dǎo)入模塊內(nèi)的部分函數(shù)或類)
3.from模塊import*(導(dǎo)入模塊下的所有東西)
Python面向?qū)ο?/p>
面向?qū)ο蠡A(chǔ)
面向?qū)ο蟮娜齻€特性
1.封裝性
2.繼承性
3.多態(tài)性
類的定義
classDemo:
'''隨便定義了一個類
#下面定義了一個類屬性
add='hello'
#下面定義了一個實例方法
defsay(self,content):
print(content)
?文檔字符串可以省略,類體中可以定義屬性、方法
屬性
?類屬性和實例屬性的區(qū)別?
?類屬性為所有實例共享,可以通過類名調(diào)用和修改類變量。
?實例屬性為每個實例所獨(dú)有,只能通過實例調(diào)用和修改。
私有屬性
?不能在類外部直接通過實例調(diào)用私有屬性,可以通過實例方法調(diào)用和修改
?以雙下劃線開頭,但不以雙下劃線結(jié)尾的屬性為私有屬性
classDemo:
def__init__(self,word):
self._word=word#_word就是一個私有屬性
defprint_str(self):
print(self._word)
a=DemoChello*)]創(chuàng)建了一個實例,將實例賦值給a
方法
?在類外部不能調(diào)用私有方法
?幾種方法的定義、作用和區(qū)別
?self和ds參數(shù)的用法
?_init_()方法的使用
?@classmethod的使用
?@staticmethod的使用
—initO_和_new()—有什么區(qū)別?
?_init_()方法在初始化一個實例的時候調(diào)用。
?_new_()方法是創(chuàng)建實例的時候調(diào)用。
?創(chuàng)建實例在初始化之前
#—init_()和_new_()的示例classPerson(object):
def_init__(self,name):
print('晚例初始化了',end='')
self,name-name
def_new_(cis,name):
print('實例創(chuàng)建了',end='')
returnobject._new_(cis)
person=Person('Sir')print(person,name)#輸出如下(輸出沒有三引號)〃〃〃
實例創(chuàng)建了
實例初始化了
Sir
實例方法
?實例方法必須通過生成的實例調(diào)用
類方法
?類下的實例對象都可以調(diào)用類方法
?類方法可以使用類名直接調(diào)用,也可以使用實例對象來調(diào)用
靜態(tài)方法
?靜態(tài)方法通過類直接調(diào)用,不需要創(chuàng)建對象,不會隱式傳遞self
類的繼承
單繼承
#這就是一個簡單的單繼承示例,C繼承AclassA(object):
defwork(self):
printCA.work,)classC(A):#C繼承了A
defwork(self):
print('C.work,)
多繼承
在多繼承下,調(diào)用一個方法,清楚該方法的繼承走向,也就是重名時優(yōu)先調(diào)用哪一
個次之又調(diào)用哪個
#多繼承IclassA(object):
defwork(self):
print('A.work,)classB(object):
defwork(self):
print('B.work,)classC(A):#C繼承了A
defwork(self):
print('C.work')classD(B):#D繼承了B
defwork(self):
print('D.work,)classE(D,c):#E繼承了D和C
defwork(seif):
print('E.work,)
e=E()
e.work()#輸出E.work
#多繼承2classA(object):
defwork(self):
print(,A.work,)classB(object):
defwork(self):
print(JB.work*)classC(A):#C繼承了A
defwork(self):
print(,C.work,)classD(B):#D繼承了B
defwork(seif):
printCD.work,)classE(D,C):#E繼承了D和C,自身沒有work方法
pass
e=E()
e.work()#輸出D.work
#多繼承3classA(object):
defwork(self):
printCA.work,)classB(object):
defwork(self):
print(,B.work,)classC(A):#C繼承了A
defwork(self):
printCC.work,)classD(B):#D繼承了B,自身沒有work方法
passclassE(D,C):#E繼承了D和C,自身沒有work方法
pass
e=E()
e.work()#輸出B.work
#多繼承4classA(object):
defwork(self):
printCA.work,)classB(object):
passclassC(A):#C繼承了A
defwork(self):
printCC.work,)classD(B):#D繼承了B,自身沒有work方法
passclassE(D,c):#E繼承了D和C,自身沒有work方法
pass
e=E()
e.work()#輸出C.work
#多繼承5cla
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州國際旅游服務(wù)合同樣本
- 商鋪租賃合同樣本:門面租賃全新范本
- 寒假臨時工雇傭合同書樣本
- 游戲品牌代言合同樣本
- 長租公寓租賃合同全文
- 新媒體廣告推廣合同模板
- 辦公室簡單裝修合同范本
- 個人貸款合同電子版模板
- 企業(yè)間的戰(zhàn)略合作框架合同范本
- 課件人物插圖小學(xué)生
- 培訓(xùn)中的基本學(xué)習(xí)原理-課件
- 現(xiàn)代文閱讀《有聲電影》答案詳細(xì)解析
- 銷售合同模板英文銷售合同模板
- 大學(xué)計算機(jī)基礎(chǔ)(Windows10+Office2016)PPT完整全套教學(xué)課件
- 精素材:描寫植物的好詞好句好段
- 【高中語文】《登岳陽樓》課件17張+統(tǒng)編版高中語文必修下冊
- 華師大版八年級數(shù)學(xué)下冊全冊教案
- 四下語文學(xué)情分析-2
- 家園合作培養(yǎng)幼兒勞動行為習(xí)慣的行動研究
- 中國的能源安全 課件
- 鄭州市某路雨水污水改造工程施工組織設(shè)計
評論
0/150
提交評論