python個人學習筆記_第1頁
python個人學習筆記_第2頁
python個人學習筆記_第3頁
python個人學習筆記_第4頁
python個人學習筆記_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

目錄

一、軟件安裝與環(huán)境設(shè)置.........................................................1

二、從print。開始................................................................5

三、變量與數(shù)據(jù)類型.............................................................7

四、流程控制(IF語句)........................................................12

五、流程控制(WHILE語句)...................................................16

六、流程控制(FOR語句)......................................................17

七、數(shù)據(jù)結(jié)構(gòu)(列表list)..............................................................................................................22

八、數(shù)據(jù)結(jié)構(gòu)(元組tuple、字典diet、集合set).................................................................26

九、函數(shù).......................................................................33

一、軟件安裝與環(huán)境設(shè)置

軟件支持pythonhttps:〃www.pvthon.orp/downloads/

編輯器pycharmhttps:〃/pvcharm/download/

學習語法時使用IDLE(建議多用),實戰(zhàn)項目時使用pycharm(每次進入環(huán)境設(shè)置慢,運行

較慢)。

Python環(huán)境設(shè)置難點在于path環(huán)境變量設(shè)置,如在安裝時沒有勾選相應選項,可在計算機

高級系統(tǒng)設(shè)置中完成:

其中,PATH值為:(視安裝時設(shè)置目錄不同有所區(qū)別)

C:\Users\czj\AppData\Local\Programs\Python\Python37\Scripts\;C:\Users\czj\AppData\Local\Pr

ograms\Python\Python37\;%PyCharmCommunityEdition%

Pycharm安裝完成后要添加編譯器:

SSettings

而I

Project:pystudy>ProjectInterpreter?Forcurrentproject

Appearance&BehaviorProjectInterpreter蘆Python3.7

Appearance

tjs

MenusandToolbars

oPackageVersionLatestversion

t

>SystemSettings

AAutomat0.8.00.8.0

?FileColors

Django3.0.33.0.3

ScopesProtego0.1.160.1.16

NotificationsPyDispatcher2.0.52.0.5

QuickListsPyHamcrest2.0.02.0.0

PathVariablesPyMySQL0.9.30.9.3

KeymapScrapy1.8.01.8.0

>EditorTwisted19.10.019.10.0

Pluginsasgiref3.2.33.2.3

>VersionControlattrs19.3.019.3.0

e

n7Project:pystudy—cffi1.13.2▲1.14.0

p

MProjectInterpreterconstantly15.1.015.1.0

S

MProjectStructurecryptography2.82.8

.:sBuild,Execution,Deploymentcssselect1.1.01.1.0

helloword0.0.10.0.1

-c>Debugger

>o

ePythonDebuggerhyperlink19.0.019.0.0

u-

z:idna2.82.8

★BuildoutSupport

>Consoleincremental17.5.017.5.0

Jbanl___

Coverage

|hOK|CancelApply

在python運行中,會有很多標準庫和模塊支持,減少工作量和提高工作效率。第三方模塊

需利用pip命令安裝或卸載。Pip命令運行在CMD環(huán)境下,通過不同開關(guān)和命令組合達到查

看、安裝、升級和卸載模塊的功能。

piplist列出已安裝模塊

pipinstall安裝模塊包(遠程或本地)

pipuninstall卸載已安裝模塊包

(XIC:\Windows\system32\cmd.exe|=||

C:\Users\czj>pipuninstallbeautifulsoup4

Foundexistinginstallation:beautifulsoup^l4.8.2

Uninstallingbeautifulsoup4~4.8.2:

Idouldremoue:

c:\users\czj\appdata\local\programs\python\python37\lib\site-packages\beauti

fulsoupH-4.8.2.dist-info\x

c:\users\czj\appdata\local\programs\python\python37\lib\site-packages\bs4\*

Proceed(y/n)?y

Successfullyuninstalledbeautifulsoup4-4.8.2

C:\Users\czj>

piplist-o查詢可升級包

pipinstall-upgrade升級模塊包

SC:\Windows\system32\cmd.exe|d||即£

MicrosoftWindows[版本6.1.7601]

版權(quán)所有(c)2009MicrosoftCorporation。保留所有權(quán)利。

C:\Users\czj>piplist-o

PackageUersionLatestType

cffi1.13.21.14.0wheel

C:\Users\czj>pipinstall--upgradecffi

Installingcollectedpackages:cffi

Attemptinguninstall:cffi

Foundexistinginstallation:cffi1.13.2

Uninstallingcffi-1.13.2:

Successfullyuninstalledcffi-1.13.2

Successfullyinstalledcffi-1.14.0

C:\Users\czj>

二、從print。開始

輸出單行字符串

>>>print("helloworld")

helloworld

輸出多行字符串(\n為換行符)

>>>print("howdo\nyoudo?n)

howdo

youdo?

也可以:

>>>x="'howdo

youdo?'"

>>>print(x)

howdo

youdo?

輸出重復字符

>>>print('*"*30)

******************************

如果用文件運行,則先編輯保存文件再運行(\t為分隔符)(IDLE下編寫):

printC*,*30)

print("O\t^加學生信息”)

運行結(jié)果為:

******************************

0添加學生信息

用文件運行,輸出完整菜單(pycharm下編寫):

~test.py

[1print("*"*30)

print("1\士添加學生信息”)

print("2\t修改學生信息")

print("3\七查詢學生信息”)

print("e\t退出")

command=input("請選擇相應項目序號:”)

運行結(jié)果:

Run:蘆.test

之C:\Users\czj\AppData\Local\Programs

■1添加學生信息

-2修改學生信息

K23查詢學生信息

丑。退出

”請選擇相應項目序號:

計算

>>>print(l+l)

2

輸出鍵盤輸入內(nèi)容(利用input())

>>>x=input("請輸入一"字:')

請輸入一個數(shù)字:9

>>>print(x)

9

格式化輸出

print。格式化輸出形式一:)

print("我叫%s,年齡%d,性別%s"%('jacky',30,'male'))

printf*,*19)

print('格式化輸出形式二:’)

print("我叫{},年齡{},性別{}".format('jacky',30,'male'))

運行結(jié)果

格式化輸出形式一:

我叫jacky,年齡30,性別male

*******************

格式化輸出形式二:

我叫jacky,年齡30,性別male

三、變量與數(shù)據(jù)類型

變量命名避免與關(guān)鍵字重名,利用“=”賦值("==”是比較運算符)

>>>a=0

>>>b=l

>>>print(a+b)

1

>>>print(A+B)

Traceback(mostrecentcalllast):

File"<pyshell#7>"fline1,in<module>

print(A+B)

NameError:name'A'isnotdefined

從上面的操作可以看出,python區(qū)分大小寫。

多個變量同時賦值:

>>>a,b=0,l

>>>print(a+b)

1

不支持缺省賦值。不管用哪種方法賦值,每個變量都應該有它對應的值:

>>>a,b=l

Traceback(mostrecentcalllast):

File"<pyshell#4>",linelfin<module>

arb=l

TypeError:cannotunpacknon-iterableintobject

>>>arb,c=l,l

Traceback(mostrecentcalllast):

File"<pyshell#3>",line1,in<module>

a,brc=l,l

ValueError:notenoughvaluestounpack(expected3,got2)

如果多個變量值相同,賦值時可以:

>>>a=b=c=l

>>>print(a+b+c)

3

下面的例子中,利用列表給變量賦值。第二行代碼的錯誤在于列表的序號應該從。開始而最

大序號應為2:

>>>lista=[l,2,3]

>>>a,b,c=lista[l]Jista[2]Jista[3]

Traceback(mostrecentcalllast):

File"<pyshell#8>"rline1,in<module>

a,b,c=lista[l],lista[2]Jista[3]

IndexError:listindexoutofrange

>>>a,b,c=lista[0],lista[l]Jista[2]

>>>print(a+b+c)

6

賦值時定義變量的數(shù)據(jù)類型

>>>a=l

>>>b=1.0

>>>c="l"

>>>type(a)

<class'int'>

>>>type(b)

<class'float'>

>>>type(c)

<class'str'>

數(shù)據(jù)類型之間相互轉(zhuǎn)換

>>>float(a)

1.0

>>>int(b)

1

>>>int(c)

1

>>>str(b)

'1.0'

運算符使用:

>>>x=100

>>>y=200

>>>print(x+y)

300

>>>print(x>y)

False

>>>print(x<y)

True

>>>print(xandy)

200

>>>print(x>0andy<500)

True

>>>print(x>0andy>500)

False

>>>print(id(x))

8791264099696

字符串操作

1、連接

>>>x="123"

>>>y="456"

>>>x+y

,123456,

>>>x="123"

>>>y="456'

>>>z="a"+x+y

>>>z

,al23456,

2、重復

>>>print(x*5)

123123123123123

3、大小寫轉(zhuǎn)換

>>>print(str.upper(z))

A123456

>>>print(str.lower(z))

al23456

字符串轉(zhuǎn)換處理的其他情況:

str.islower()檢查字符串是否全是小寫,返回布爾值

str.isupper()檢查字符串是否全是大寫,返回布爾值

str.capitalize()把字符串的第一個字符大寫

str.title()返回標題化的字符串(所有單詞首字母大寫,其余小寫)

str.swapcase()翻換字符串的大小寫

>>>a="happynewyear"

>>>print(str.capitalize(a))

Happynewyear

>>>print(str.title(a))

H叩pyNewYear

>>>print(str.swapcase(a))

HAPPYNEWYEAR

進階問題如果a=〃it,sfine〃,即字符串中帶有引號。怎么處理?

程序分析用split分割后,分開轉(zhuǎn)換處理,然后再連接。

處理如下:

>>>a="happynewyear"

>>>print(str.capitalize(a))

Happynewyear

>>>print(str.title(a))

HappyNewYear

>>>print(str.swapcase(a))

HAPPYNEWYEAR

>>>a="it'sfine"字符串帶引號

>>>print(str.title(a))

It'SFine效果不理想

>>>lista=a.split(…)切片,列表賦值

>>>print(lista)

['it','sfine1]

>>>print(str.title(lista[O]))

It

>>>print(str.title(listarnn

SFines應該用小寫

>>>listb=lista[l].split('")把底⑴切片,分開處理

>>>print(listb[O]+"\t"+listb[l])

sfine

>>>print(str.title(listb[l]))

Fine

>>>print(str.title(listaron+B"+li?throi+ctr.title(listb[l]))

It'sFine單詞間用空格分開

>>>print(str.title(listc*rnn+"'"+licthrni+""+str.title(listb[l]))

It'sFine最后處理結(jié)果

4、去空格

>>>x=n123"

>>>x

'123'

>>>print(str.strip(x))

123

str.strip()去掉字符兩邊的空格和回車換行符

str.lstrip()去掉字符左邊的空格和回車換行符

str.rstrip()去掉字符右邊的空格和回車換行符

5、拆分字符串,拆分結(jié)果為列表,可切片調(diào)用:

>>>x='l23"

>>>print(x.split(''))

['1','2','3']

>>>lista=x.split('')

>>>print(lista[O])

1

Split。如果后面帶上第二個參數(shù),則表示分隔成多少個元素。注:。表示1個,即n+1個。

>>>print(x.split('',1))

['1",'23'1

技能實訓

Ch02test(p40).py

在這個實訓中,先把每個字符串賦予一個變量,遵循去空格一一換字符一一小寫這樣的處理

順序。多利用輸出語句查看運行結(jié)果以確定運行情況,精確找出程序編寫過程中的錯誤。在

變量賦值時,如果只有一個數(shù)據(jù)類型,可用一個字母加數(shù)字賦值;如果存在多種數(shù)據(jù)類型,

可以分開命名變量:字符串型可用a、b、c、d賦值,數(shù)值可以用x、y賦值。

格式化輸出

1、浮點數(shù)設(shè)置格式

>>>printC%5.2f%x)

123.46

>>>print('%5.6f,%x)

123.456000

%5.2f指:長度為5,小數(shù)位為2

2、不同數(shù)制之間的轉(zhuǎn)換

>>>x=100

>>>bin(x)

'ObllOOlOO'Ob代表二進制

>>>hex(x)

'0x64'Ox代表十六進制

>>>oct(x)

,0ol44'Oo代表八進制

十進制數(shù)100等于二進制數(shù)1100100十六進制數(shù)64八進制數(shù)144

3、字符串格式化輸出

>>>print('helloworld')

helloworld

>>>print('%20s'%'hpllnworlds

helloworld長度20,右對齊,不足部分空格補足。

>>>print('%-20s'%'HAIIOworlds

helloworld長度20,左對齊,不足部分空格補足。

>>>print('%.2s'%'helloworld1)

he取2個字符

用.format格式化輸出

>>>print('{0}{lJ'.formatChello'/world'))#帶數(shù)字編號

helloworld

>>>print('{}{},.format(,hello7world,))#不帶字段

helloworld

>>>print('{0}{l},.formatChello';world'))#帶數(shù)字編號

helloworld

>>>print('{l}{0},.formatChello';world,))#帶數(shù)字編號

worldhello

>>>print('{0}{1}{l},.formatChello';world'))#帶數(shù)字編號

helloworldworld

>>>print("Mynameis%sandweightis%dkg!"%('Zara',21))用%定義

MynameisZaraandweightis21kg!

四、流程控制(IF語句)

1、最簡單的選擇結(jié)構(gòu):

>>>sale=6000

>>>ifsale<5000:

print。業(yè)績過低”)

else:

print,你真棒”)

你真棒

多語句編寫時,建議采用IDE文件環(huán)境而不采用IDLE交互環(huán)境。Python中的縮進要求非常

嚴格,必須嚴格對齊。編寫時應注意,同時要注意中英文字符的區(qū)別。如果出現(xiàn)錯誤提示,

檢查縮寫縮進是否規(guī)范、字符書寫是否規(guī)范:

晶test.py-F:/pystudy/test.py(3.7.6)

FileEditFormatRunOptionsWindowHelp

sale=5000

ifsale<5000:

print,業(yè)績過低”)

else:

print。你真棒")

2、表達式如果涉及數(shù)值比較,轉(zhuǎn)換成相同數(shù)據(jù)類型

錯誤寫法:

sale=input("請輸入業(yè)績數(shù)值:,)

ifsale<5000:

print,業(yè)績過低”)

else:

print("你真棒")

運行時出現(xiàn)錯誤提示:

請輸入業(yè)績數(shù)值:4000

Traceback(mostrecentcalllast):

File"F:/pystudy/test.py",line2,in<module>

ifsale<5000:

TypeError:'<'notsupportedbetweeninstancesof'str'and'int'

即:input。接受鍵盤輸入的數(shù)據(jù)為str類型,而5000為int類型,不能比較。

正確寫法:

sale=int(input(情輸入業(yè)績數(shù)值:'))

ifsale<5000:

print,業(yè)績過低”)

else:

print,你真棒”)

If語句三目運算:

語法:為真時的結(jié)果if判斷條件else為假時的結(jié)果

例:x=x+1ifx%2==lelsex

說明:當x除以2的余數(shù)為1時,x的值為x+1;如果余數(shù)不為1,則返回值為X。

完整語句:

x=int(input(精輸入一個整數(shù):"))

x=x+1ifx%2==lelsex

print(x)

運行結(jié)果:

請輸入f整數(shù):3

4

>>>

=======================RESTART:F:/pystudy/自學記S/test.py==============

請輸入f整數(shù):4

4

3、三個以上多分支

課本47頁例子:

sale=6000

ifsale<=5000:

print。無提成”)

elifsale<=10000:

printC?最高提成10%”)

elifsale<=50000:

print("最高提成20%”)

else:

printC1最高提成30%")

輸出結(jié)果:

最高提成10%

涉及多分支時,請注意比較運算符。統(tǒng)一比較運算符。

4、if語句嵌套

題目利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之

間的用B表示,60分以下的用C表示。

程序分析用條件判斷即可。

編寫如下:

points=int(input('輸入^(:1))

itpoints<60:

grade='C

elifpoints<90:

grade="B'

else:

grade='A'

print(grade)

進階要求在B段分Bl和B2,Bl:60-74,B2:75-89o

采用if語句分段嵌套:

points=int(input(輸入分數(shù):1))

ifpoints<60:

grade='C

else:

ifpoints<75:

grade='Bl'

else:

ipoints<90:

grade="B2"

else:

grade='A"

print(grade)

編寫時也可能采用if...elif...else...結(jié)構(gòu)。

技能實訓

Ch03test(p50).py

參考教材49頁代碼,采用if語句內(nèi)外嵌套。首先,定義月份、艙位和機票原價三個變量;

第一層判斷:出行月份是旺季或淡季;第二層判斷:艙位是頭等艙或經(jīng)濟艙;最后輸出標桿

折扣價。

<11。11m$=時(即仇("請選擇您出行的月份1~12:"))

seat=int(inputC1請您選擇艙位?頭等艙請輸入1,經(jīng)濟艙請輸入2:”))

moneys=int(input("請輸入機票原價:"))

itmonths>=4andmonths<=10:

print。出行月份為旺季”)

ifseat==l:

printC1您選擇的是頭等艙”)

print,機票折扣為9折”)

print("您的機票價格為:"+str(moneys*0.9))

print(moneys*0.9)

else:

printC■您選擇的是經(jīng)濟艙”)

print,機票折扣為斯”)

printC■您的機票價格為:'+str(moneys*0.6))

else:

print。出行月份為淡季”)

ifseat==l:

print,您選擇的是頭等艙”)

print。機票折扣為5折”)

print,您的機票價格為:"+str(moneys*0.5))

else:

print,您選擇的是經(jīng)濟艙”)

print。機票折扣為韋斤”)

print("您的機票價格為:"+str(moneys*0.4))

進階提問請問最后輸出的機票價格是什么數(shù)據(jù)類型?

五、流程控制(WHILE語句)

While語句的關(guān)鍵在于條件表達式,如果條件表達式為Flase(即條件不成立),語句會跳過

循環(huán)體。如果條件一開始就不成立,循環(huán)體會一次也不執(zhí)行。

1至10數(shù)值之和:

count=0

i=l

whilei<=10:

count=count+i

i=i+l

print("count="+str(count))

i=i+l不能省略,否則會出現(xiàn)死循環(huán)。count=conut+i也可以寫成count+=io

count=0

i=l

whilei<=10:

count+=i

i=i+l

print(Bcount=B+str(count))

教材52頁例子

sum=0

count=0

i=l

whilei<=100:

ifi%2!=0:

sum+=i

count+=l

i+=l

print("avg="+str(sum/count))

有兩個問題:1、原則上不用關(guān)鍵字作變量名,所以最好不用sum;2、按以上編寫程序運行

后結(jié)果應為:avg=50.0,因為進行除法運算sum/count時,得出的結(jié)果應為浮點數(shù)。如果

一定要按頁顯示,最后輸出語句應為:修改后語

52printCavg='+str(int(sum/count)))o

句為:

num=O

count=0

i=l

whilei<=100:

ifi%2!=0:

num+=i

count+=l

i+=l

print("avg="+str(int(num/count)))

六、流程控制(FOR語句)

for語句遍歷數(shù)據(jù)集合,所以通常使用inrange()。range()是python中產(chǎn)生一個數(shù)的集合

工具,基本結(jié)構(gòu)為range(start,stop,step),即產(chǎn)生從start數(shù)開始,以step為步長,至stop

數(shù)結(jié)束的數(shù)字集合,其中包含start數(shù)但不包含stop數(shù),start可以省略,默認為0,step

也可,默認值為1。

輸出字符串字符:

forletterin'Python':#分行打印字符串中的字母

print('當前字母letter)

輸出1至10數(shù)值之和:

count=0

foriinrange(l,ll):

count+=i

print(count)

語句中不設(shè)增量語句i=i+l,因為range。函數(shù)默認步長為1。

輸出1到10中奇數(shù)之和(與上例比較,其實就是步長改為2):

count=0

foriinrange(lrllf2):

count+=i

print(count)

進階提問

用戶登錄問題:

1、輸入用戶名和密碼;

2、判斷用戶名和密碼是否正確?(正確輸入為:name='admin',passwd='gclcmxy')

3、登錄僅有三次機會,不超過3次重新輸入,超過3次則報錯。

foriinrange(3):

name=input('用戶名:')

passwd=input('密碼:')

ifname=='admin'andpasswd=='gdcmxy':

print。登錄成功)

break

else:

print('登錄失敗’)

print('您還剩余%d次機會'%(2-i))

printC登錄次數(shù)超過三次,請核對后登錄,)

上述語句中變量i從0開始,到3結(jié)束,即分別為0、1、2三次運行過程。所以在剩余機會

次數(shù)中用了2-i而不能用34。

多重循環(huán)(教材55頁示例9)

end="y"

whileend=="y'orend=="Y":

print("輸入銷售人員:”,end="”)

name=input。#錄入銷售人員姓名

sum=0

foriinrange(l,4):

print("請輸入第"+str(i)+”個月的銷售金額:.)

score=input。#錄入霜售金額

sum+=int(score)

avg=sum/3#計算平均銷售金額

print(name+”的月平均銷售金額是:"+str(avg))

print,繼續(xù)輸入嗎(y/n)?")

end=input。#錄入位

print,銷售金額錄入結(jié)束”)

Print。輸出后默認換行,而加入end=""代表不自動換行。

Break和continue的使用:

foriinrange(l,100):

ifi%4==0:

continue

print(i)

ifi==50:

break

print,艮至到50")

print("程序結(jié)束”)

輸出1-100的數(shù)字,如遇到4倍數(shù)不輸出。在數(shù)列中原設(shè)定為100,但在上述語句中設(shè)置了

if語句判斷是否已經(jīng)到50,如果條件成立則退出循環(huán)。在python中還有pass語句,作用是

暫時沒啥想法,空操作,留下位置將來編寫。

技能實訓I(教材59頁)

最初思路:

Max=0

Min=0

x=int(inputs請輸入一個整數(shù):"))

whilex!=0:

ifx==0:

Max=x

Min=x

elifx>Max:

Max=x

elifx<Min:

Min=x

x=int(input,請輸入另一個整數(shù):"))

print。最大值是:最小值是:;Min)

輸出運行結(jié)果不正確。Max值結(jié)果正確而Min最小值無法改變。

請輸入一個整數(shù):4

請輸入另一個整數(shù):9

請輸入另一個整數(shù):6

請輸入另一個整數(shù):0

最大值是:9最小值是:0

請輸入一個整數(shù):3

請輸入另一個整數(shù):2

請輸入另一個整數(shù):5

請輸入另一個整數(shù):7

請輸入另一個整數(shù):4

請輸入另一個整數(shù):0

最大值是:7最小值是:0

調(diào)整一下:

Max=0

Min=0

x=int(input(精輸入一個整數(shù):"))

whilex!=0:

ifMax==O:

Max=x

Min=x

elifx>Max:

Max=x

elifx<Min:

Min=x

x=int(input(精輸入另一個整數(shù):"))

print。最大值是:\Max/\f/最小值是:\Min)

運行結(jié)果正確:

請輸入一個整數(shù):8

請輸入另一個整數(shù):5

請輸入另一個整數(shù):9

請輸入另一個整數(shù):3

請輸入另一個整數(shù):5

請輸入另一個整數(shù):1

請輸入另一個整數(shù):0

最大值是:9最小值是:1

調(diào)整為教材要求的輸出結(jié)果,也可以在while循環(huán)體中判斷x是否為0:

Max=0

Min=0

whileTrue:

X=int(input。請輸入一個整數(shù):"))

ifx==0:

break

ifMax==0:

Max二x

Min=x

elifx>Max:

Max=x

elifx<Min:

Min=x

print。最大值是:",Max/\t\-最小值是:\Min)

個人編寫習慣問題。前面編寫時思路主要是根據(jù)教材59頁提供的分析思路,編成語句,結(jié)

果無法實現(xiàn)。所以有時我們所表述和理解的與機器所理解和執(zhí)行的是不一致的。

作業(yè)(教材60頁)

1、顯示英文星期名稱

whileTrue:

num=int(inputC1輸入一整數(shù)1~7:"))

ifnum==O:

break

elifnum==l:

printCMON")

elifnum==2:

printCTUE”)

elifnum==3:

printCWED')

elifnum==4:

printCTHU*)

elifnum==5:

print('FRI")

elifnum==6:

print("SAT")

elifnum==7:

print("SUN")

else:

print("輸入錯誤,請重新輸入")

print,程序結(jié)束”)

運行結(jié)果:

輸入一個整數(shù)1~7:1

MON

輸入一個整數(shù)1~7:2

TUE

輸入一個整數(shù)1~7:3

WED

輸入一個整數(shù)7:4

THU

輸入一個整數(shù)1~7:5

FRI

輸入一個整數(shù)1~7:6

SAT

輸入一個整數(shù)1~7:7

SUN

輸入一個整數(shù)1~7:8

輸入錯誤,請重新輸入

輸入一個整數(shù)1~7:0

程序結(jié)束

2、斐波那契數(shù)列

num=int(input("輸入一整數(shù):"))

x=0

y=0

foriinrange(l,num+l):

ifi==1:

x=0

y=i

else:

n=y

y=x+y

x=n

print(y,end="\t")

數(shù)列range。開始值默認為0,如果不設(shè)開始值會多出一個0;數(shù)列range。不包含結(jié)束值,所

以要+1。運行結(jié)果:

輸入一個整數(shù):8

01123581321

===================RESTART:F:\pystudy\自學記錄\ch03zy2(p60).py===

輸入一個整數(shù):8

1123581321

3、整數(shù)反轉(zhuǎn)

s=input。輸入一串整數(shù):")

string=""

num=len(s)-l

foriinrange(len(s)):

string+二s[num-i]

print(string)

上面的例子利用了for循環(huán)。利用字符串列表切片更簡單高效:

s=input。輸入一串整數(shù):")

print(s[::-l])

七、數(shù)據(jù)結(jié)構(gòu)(列表list)

>>>s=[1000,5200,4700,3860,1200,8500]賦值

>>>s[0]定位

1000

>>>S.appendCSOOQ")增加(在list原有元素后增加一個新元素:字符串“3000”)

>>>s

[1000,5200,4700,3860,1200,8500,'3000']

>>>dels[-l]刪除

>>>s

[1000,5200,4700,3860,1200,8500]

>>>s.append(3000)增加(在list原有元素后增加一個新元素:整型數(shù)3000)

>>>s

[1000,5200,4700,3860,1200,8500,3000]

>>>s[l]=2000新元素(整型數(shù)2000)作為list的第二個元素,替換原有元素5200。

>>>s

[1000,2000,4700,3860,1200,8500,3000]

List的操作主要有賦值、定位、增加、刪除、更新、插入。

在list的索引號1位置中插入新數(shù)據(jù),原有的元素依次后移:

>>>s

[1000,2000,4700,3860,1200,8500,3000]

>>>sJnsert(l,4500)

>>>s

[1000,4500,2000,4700,3860,1200,8500,3000]

回到我們前面的一個例子(整數(shù)反轉(zhuǎn)):

>>>s="123456-

>>>s[::-l]

,654321,

把字符串看成一個列表。用法:列表名[n:m:步長]得到從n(包含)到m(不包含)的元

素,得到的是原列表的拷貝。如果n為最大索引號,m為0,步長帶負號,列表倒數(shù)(取不

到第一個元素)。忽略n默認從0開始,同時忽略m默認到結(jié)尾。

>>>s[::]

,123456,

>>>s[0:len(s)]

,123456,

>>>s[0:len(s):-l]

(I

第一個語句把list所有元素輸入;第二個語句同理,用求字符串長度len⑸代替m;當n、m

不省略時,用負數(shù)作為步長時list為空。

隔位取元素

>>>s[0:len(s):2]

'135'

教材66頁示例5:

s=[10000f5200f4700,3860r1200f8500]

forindexinrange(len(s)):

ifs[index]<5000:

s[index]=5000

print。索引為%d的員工月薪小500(T%(index))

print。修改后的列表:')

print(s)

通過for循環(huán)遍歷列表,找出小于5000的元素并替換為5000o

二維列表(列表之中包含列表)

s=『ar,”王保華■,10000],[匕2/李偉新”,5200],[匕3/張強”,4700],

[匕24","張明”,3860],[匕5",”陳香”,1200],[匕6”,“李牧”,8500]]

forxins:

foryinx:

print(y,end="\t")

print("\n")

print("-"*30)

列表的排序

設(shè)li=[3,2,6,5,1,8],通過sorted進行排序從低到高顯示,可寫成sorted(li);如果是從高到低

排序,可寫成sorted(li,reverse=True)。使用sorted函數(shù)并不會對列表存儲產(chǎn)生影響。

技能實訓

1、楊輝三角

a=[l]

print(a)#打印第1行

#其他7層用循環(huán)嵌套

foriinrange(7):#第一?OS環(huán):環(huán)

newline=[]#保存新的列表,第二循環(huán)時更新為空

forxinrange(len(a)+1):#第二層循環(huán):列表長度循環(huán)

ifx==0:#如果是第1個元素,值為1

newline.append(l)

elifx==len(a):#如果是最后1個元素,值為1

newline.append(l)

else:

#列表中的數(shù)的值等于它上方兩數(shù)之和

newline.append(a[x]+a[x-1])

a=newline#更新數(shù)列

print(a)

運行結(jié)果:

[1]

[1,1]

[1,2,1]

[1,3,3,1]

[1,4,6,4,1]

[1,5,10,10,5,1]

[1,6,15,20,15,6,1]

[1,7,21,35,35,21,7,1]

2、冒泡排序

a=[]

foriinrange(6):

num=input。請輸入第%d個整數(shù):”%(i+l))

a.append(int(num))#6個整數(shù)形成~個數(shù)列

print("6個整數(shù)輸入后形成的數(shù)列:”)

print(a)

forxinrange(l,len(a)):

foryinrange(x,0,-l):

ifa[y]<a[y-1]:#比較前后元素,如果前一個元素較大,前后元素互換

temp=a[y-1]

a[y-1]=a[y]

a[y]=temp

print("通過冒泡排序處理后的數(shù)列:,)

print(a)

運行結(jié)果:

請輸入第1個整數(shù):8

請輸入第2個整數(shù):4

請輸入第3個整數(shù):1

請輸入第4個整數(shù):8

請輸入第5個整數(shù):9

請輸入第6個整數(shù):3

6個整數(shù)輸入后形成的數(shù)列:

[8,4,1,8,9,3]

通過冒泡排序處理后的數(shù)列:

[1,3,4,8,8,9]

二維列表(列表中包含另一個列表)

lista=[[1,2,3],[4,5,6],[7,8,9]]

print('lista列表元素有:’)

print(lista)

print('其中l(wèi)ista列表第二個元素是:’)

print(lista[1])

printClist[1]的數(shù)據(jù)類型是:)

print(type(lista[1]))

print('lista[1]列表第三個元素是:,)

print(lista[1][2])

運行結(jié)果

lista列表元素有:

[[1,2,3],[4,5,6],[7,8,9]]

其中l(wèi)ista列表第二個元素是:

[4,5,6]

的數(shù)據(jù)類型是:

<class'list'>

lista[1]列表第三個元素是:

6

二維列表的操作

對二維列表中元素的操作可參考列表操作

如:在中增加一個元素后,lista[1]和lista同時改變。

[4,5,6,9]

[[1,2,3],[4,5,6,9],[7,8,9]]

八、數(shù)據(jù)結(jié)構(gòu)(元組tuple、字典diet、集合set)

列表賦值形式:列表名=[value]

元組賦值形式:元組名=(value)

元組和列表的區(qū)別在于:列表元素可以更改而元組元素不能更改。

>>>a=[l,2,3]

>>>a

[1,2,3]

>>>a[l]=4

>>>a

[1,4,3]

>>>b=(1,2,3)

>>>b[l]=4

Traceback(mostrecentcalllast):

File"<pyshell#5>",line1,in<module>

b[l]=4

TypeError:'tuple'objectdoesnotsupportitemassignment

上述例子中,a為列表,可以更改;b為元組,不能更改。

如果要改動元組元素,可以與列表進行轉(zhuǎn)換。list。把元組轉(zhuǎn)換成列表,tuple。把列表轉(zhuǎn)換成

元組。

>>>b=list(b)

>>>b

[1,2,3]

>>>b[l]=4

>>>b

[1,4,3]

>>>a=tuple(a)

>>>a

(1,4,3)

>>>a[l]=2

Traceback(mostrecentcalllast):

File"<pyshell#12>",line1,in<module>

a[l]=2

TypeError:'tuple'objectdoesnotsupportitemassignment

上述例子中,原來的元組b轉(zhuǎn)換成列表,所以可以更改;相反,原來的列表a轉(zhuǎn)換成元組,

里面的元素不可更改。

當列表中儲存大量數(shù)據(jù)時,獲取數(shù)據(jù)相當耗時。如果列表中某一部分數(shù)據(jù)具有唯一性,可以

以它作為索引快速獲取數(shù)據(jù)。這時,可以用字典diet來保存數(shù)據(jù)。

字典賦值形式:

字典名={key:value}

>>>d={'al*:[l,2,3]/a2,:[4,5,6]}

>>>d

{'al':[1,2,3],'a2':[4,5,6]}

字典元素訪問:

>>>print(d["a2"])

[4,5,6]

利用索引可以進行字典元素的增加、刪除和更改。由于字典以索引形式查找數(shù)據(jù),所以在字

典中不存在序號的概念,也不沒有插入操作了:

>>>d=ral,:[l,Z3],"a2":[4,5,6]}

>>>d

{'al':[1,2,3],'a2':[4,5,6]}

>>>d['a3']=[6,8,9]

>>>d

{'al':[1,2,3],'a2':[4,5,6],'a3':[6,8,9])

>>>d['a4']=[0,0,0]

>>>d

{'al':[1,2,3],'a2':[4,5,6],'a3':[6,8,9],'a4':[0,0,0]}

>>>deld["a3']

>>>d

{"al':[1,2,3],'a2':[4,5,6],'a4':[0,0,0])

>>>d["a4"]=[l,l,l]

>>>d

('al':[1,2,3],'a2':[4,5,6],'a4':[1,1,1])

進階問題如果我們新增一個鍵值為“a3”、數(shù)據(jù)為[6,6,6]的元素,那么,它是放在什么地方?

集合與列表的區(qū)別:集合是無序的,數(shù)據(jù)也是唯一的。如果在集合中添加已有數(shù)據(jù),則集合

只保留一個。

集合賦值形式:

1、空集合:集合名=set()

2、非空集合:集合名={元素}

>>>a=setO

>>>a.add("魚百肉絲”)

>>>print(a)

{‘魚香肉絲’}

>>>a.add(We蛋")

>>>a

{‘煎雞蛋','魚香肉絲’}

>>>a.add("羊肉煲”)

>>>a.add("羊肉煲”)

>>>a

{,羊肉煲丁煎雞蛋丁魚香肉絲,}

>>>a.add("官保雞丁")

>>>a

f羊肉煲丁煎雞蛋丁官保雞丁丁魚香肉絲?

上述例子中重復輸入“羊肉煲”,但顯示時只有一個,可見集合有排重功能。

集合運算

1、并I

2、交&

>>>a={1,2,3}

>>>b={2,5,6}

>>>c=a|b

>>>c

(1,2,3,5,6)

>>>d=a&b

>>>d

{2}

技能實訓(教材77頁《桃天》)

string=(為此夭夭,灼灼其華。之子于歸,宜其室家。\n”

為叱夭夭,有黃其實。之子于歸,宜其家室。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論