Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 郭煒 1. Python初探 -7. 組合數(shù)據(jù)類(lèi)型(3)字典和集合_第1頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 郭煒 1. Python初探 -7. 組合數(shù)據(jù)類(lèi)型(3)字典和集合_第2頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 郭煒 1. Python初探 -7. 組合數(shù)據(jù)類(lèi)型(3)字典和集合_第3頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 郭煒 1. Python初探 -7. 組合數(shù)據(jù)類(lèi)型(3)字典和集合_第4頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件 郭煒 1. Python初探 -7. 組合數(shù)據(jù)類(lèi)型(3)字典和集合_第5頁(yè)
已閱讀5頁(yè),還剩419頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

信息科學(xué)技術(shù)學(xué)院

計(jì)算概論C教材Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版)郭煒編著人民郵電出版社慕課:中國(guó)大學(xué)MOOC實(shí)用Python程序設(shè)計(jì)/course/PKU-1460924165?from=searchPage信息科學(xué)技術(shù)學(xué)院福建省寧德市北岸公園程序設(shè)計(jì)語(yǔ)言概述常見(jiàn)程序設(shè)計(jì)語(yǔ)言Java:使用最廣泛的語(yǔ)言。主要用于互聯(lián)網(wǎng)服務(wù)器端應(yīng)用和Android手機(jī)App開(kāi)發(fā)C/C++:開(kāi)發(fā)對(duì)速度要求較高的系統(tǒng)軟件,以及大型端游C#:微軟公司程序設(shè)計(jì)語(yǔ)言,網(wǎng)站開(kāi)發(fā),桌面應(yīng)用開(kāi)發(fā)PHP:網(wǎng)站開(kāi)發(fā)JavaScript:網(wǎng)站前端開(kāi)發(fā)。在瀏覽器中運(yùn)行Swift:蘋(píng)果公司語(yǔ)言,用于開(kāi)發(fā)iPhoneApp和Mac桌面應(yīng)用程序常見(jiàn)程序設(shè)計(jì)語(yǔ)言為什么學(xué)Python簡(jiǎn)單易學(xué)有眾多的庫(kù)支持,功能強(qiáng)大

編程效率高

跨平臺(tái)(Windows,Linux,MacOS...)Python的歷史Python的作者,GuidovonRossum,荷蘭人。1982年,Guido從阿姆斯特丹大學(xué)(UniversityofAmsterdam)獲得了數(shù)學(xué)和計(jì)算機(jī)碩士學(xué)位。之所以選中Python(大蟒蛇的意思)作為該編程語(yǔ)言的名字,是因?yàn)樗且粋€(gè)叫MontyPython的喜劇團(tuán)體的愛(ài)好者。Python的歷史

Python雛形 1991年P(guān)ython1.0

1994年11月Python2.0 2000年P(guān)ython2.7.13是Python2的最后版本Python3.0 2008年P(guān)ython3不向后兼容Python2目前:Python3.8.6Python開(kāi)發(fā)環(huán)境的安裝和使用信息科學(xué)技術(shù)學(xué)院

郭煒內(nèi)蒙古阿斯哈圖石林下載Python/downloads/MacOSX64-bit/32-bitinstallerWindowsx86-64executableinstaller 64位WindowsWindowsx86executableinstaller 32位Windows搭建Python開(kāi)發(fā)環(huán)境下載并安裝Python3.x下載并安裝pycharm-community-4.0.4(非必需,但強(qiáng)烈推薦)/pycharm/download/#section=windows3)配置pycharm

4)在pycharm建工程5)編寫(xiě)、運(yùn)行python程序安裝Python1.不是下載下來(lái)就好了,還要運(yùn)行下載下來(lái)的文件,進(jìn)行安裝2.要勾上,否則pycharm里面找不到python以命令行方式運(yùn)行python程序Windows下,Win+R

鍵,可以彈出左邊“運(yùn)行”窗口,敲"cmd"確定,就能彈出右邊cmd窗口(命令行窗口)Mac上相應(yīng)操作,是從launchPad里面啟動(dòng)“終端”以命令行方式運(yùn)行python程序Windows下,Win+R

鍵,可以彈出左邊“運(yùn)行”窗口,敲"cmd"確定,就能彈出右邊cmd窗口(命令行窗口)敲cd\再敲cd\tmp(或其它文件夾名)進(jìn)入存放python程序的文件夾pythonXXX.py就可以運(yùn)行XXX.py用idle編輯程序并運(yùn)行Python程序window鍵,然后敲idle,可找到idle,然后File|New|Run用PyCharm運(yùn)行python程序File|NewProject新建一個(gè)工程(Mac電腦上,PyCharm的菜單在屏幕最上方)File|New

新建一個(gè)PythonFile

并隨意命名Run菜單運(yùn)行程序。如果同時(shí)打開(kāi)多個(gè).py程序,則用Run|Run

可以選一個(gè)。以后要運(yùn)行同一個(gè)文件,在右上方點(diǎn)4)如果程序需要輸入,則在PyCharm下方輸入,輸出結(jié)果也會(huì)出現(xiàn)在下方為project設(shè)置解釋器如果pycharm找不到pythoninterpereter,則:File|Settings|Project:XXX|Projectinterpreter,然后選解釋器。如果沒(méi)得選,就addlocal加一個(gè),加的辦法是選python安裝的文件夾安裝Python要在命令行方式啟動(dòng)python,就要在安裝的時(shí)候勾上不行就卸載重裝最簡(jiǎn)單的Python程序print("Hello,World")程序中的符號(hào)程序中的所有字符都必須是英文(半角)字符,不能是中文(全角)字符,注意.',(,"之類(lèi)的,都必須是英文字符!22輸入了中文的括號(hào)和雙引號(hào),導(dǎo)致pyCharm以紅線提示錯(cuò)誤!信息科學(xué)技術(shù)學(xué)院Python語(yǔ)言基本要素符號(hào)和注釋信息科學(xué)技術(shù)學(xué)院

郭煒瑞士布里茨恩湖程序中的符號(hào)

程序中的所有字符都必須是英文字符,不能是中文的字符,注意,:

.',("之類(lèi)的,都必須是英文字符!不能是中文的!不能在輸入中文狀態(tài)下輸入!中文的標(biāo)點(diǎn)符號(hào)看起來(lái)一般比英文的更寬。除非就是要輸出中文文字,才會(huì)在“字符串”中使用中文25注釋26并非需要執(zhí)行的指令,只是為了編程者方便理解程序之用注釋?zhuān)?#"開(kāi)頭a=b#讓a和b的值相同

注釋27Pycharm中,選中若干行,Ctrl+'/'可將這些行都變成注釋/都由注釋變?yōu)榉亲⑨屝畔⒖茖W(xué)技術(shù)學(xué)院福建省寧德市北岸公園變量新疆喀拉峻鱷魚(yú)灣變量29變量有名字,可以用來(lái)存儲(chǔ)數(shù)據(jù)。其值可變。a=12

b=a #讓b的值變得和a一樣

print(a+b)

a="hello"

print(a)輸出:24hello變量的命名辦法30變量由大小寫(xiě)字母、數(shù)字和下劃線構(gòu)成,中間不能有空格,長(zhǎng)度不限,不能以數(shù)字開(kāi)頭

name_doorNumx1yza2A number_of_studentsMYTYPE變量名最好能夠體現(xiàn)變量的含義多單詞的變量名,最好第一個(gè)單詞小寫(xiě),后面單詞首字母大寫(xiě)dateOfBirth numOfDogs bookPrice變量的命名辦法31變量名是大小寫(xiě)相關(guān)的a和A,name和Name是不同的變量。有些名字Python預(yù)留了,不可用作變量的名字 andasassertbreakclasscontinuedef delelifelseexceptexecforfinallyfrom globalifimportinislambdanotorpass printraisereturntrywhilewithyield

如果不小心用了,python會(huì)報(bào)錯(cuò)信息科學(xué)技術(shù)學(xué)院新疆布爾津五彩灘賦值語(yǔ)句賦值語(yǔ)句33形式:

變量=表達(dá)式將變量的值變得和“表達(dá)式”的值一樣變量、數(shù)、字符串都是“表達(dá)式”賦值語(yǔ)句34a="he"

print(a) #>>he

b=3+2

a=b#a的值變得和b一樣

print(b) #>>5

print(a)#>>5

b=b+a#b的值改為原來(lái)b的值加aprint(b) #>>10b=b*3 #'*'代表乘法print(b) #>>30賦值語(yǔ)句35a,b="he",12print(a,b) #>>he12a,b=b,a #交換a,b的值

print(a,b)#>>12hec,a,b=a,b,aprint(a,b,c)#>>he1212a=b=c=10print(a,b,c)#>>101010

信息科學(xué)技術(shù)學(xué)院新疆塞里木湖字符串初步字符串可以且必須用單引號(hào)、雙引號(hào)或三單引號(hào)、三雙引號(hào)括起來(lái)x="Isaid:'hello'"print(x) #>>Isaid:'hello'print('Isaid:"hello"')#>>Isaid:"hello"print('''Isaid:'hesaid"hello"'.''')#>>Isaid:'hesaid"hello"'.print("this\is\good")#>>thisisgood字符串太長(zhǎng)時(shí),可以分行寫(xiě)print(hello,word)

#錯(cuò)!沒(méi)有用引號(hào)括起來(lái)37字符串字符串里面不會(huì)包含變量s=1.75print(s) #>>1.75print("Iamsmtall") #>>Iamsmtall字符串中的s就是個(gè)字符,和前面的變量s沒(méi)有關(guān)系!!!字符串必須用引號(hào)括起來(lái),用引號(hào)括起來(lái)的就是字符串!a=4b=5print("a+b")#>>a+b不會(huì)打出9!!!!!38字符串三雙引號(hào)字符串中可以包含換行符、制表符以及其他特殊字符。para_str="""多行字符串可以使用制表符TAB(\t)。也可以使用換行符[\n]。<HTML><HEAD><TITLE>FriendsCGIDemo</TITLE></HEAD><BODY><H3>ERROR</H3><FORM><INPUTTYPE=buttonVALUE=BackONCLICK="window.history.back()"></FORM></BODY></HTML>"""print(para_str)39多行字符串可以使用制表符TAB( )。也可以使用換行符[]。<HTML><HEAD><TITLE>FriendsCGIDemo</TITLE></HEAD><BODY><H3>ERROR</H3><FORM><INPUTTYPE=buttonVALUE=BackONCLICK="window.history.back()"></FORM></BODY></HTML>字符串字符串的下標(biāo)有n個(gè)字符的字符串,其中的每個(gè)字符都是長(zhǎng)度為1的字符串:

從左到右依次編號(hào)為0,1,2...n-1

從右到左依次編號(hào)為-1,-2...-n編號(hào)就是下標(biāo)a="ABCD" print(a[-1]) #>>Dprint(a[0]) #>>Aprint(a[2]) #>>C 40字符串不可修改不可以修改字符串中的字符a="ABCD" a[2]='k'#錯(cuò),字符串中的字符不能修改41字符串用"+"連接字符串a(chǎn)="ABCD"b="1234"a=a+bprint(a) #>>ABCD1234a=a+a[1] print(a) 42字符串用"+"連接字符串a(chǎn)="ABCD"b="1234"a=a+bprint(a) #>>ABCD1234a=a+a[1] print(a) #>>ABCD1234B43字符串用in,notin判斷子串a(chǎn)="Hello"b="Python"print("el"ina) #>>Trueprint("th"notinb) #>>Falseprint("lot"ina) #>>False44字符串和數(shù)

的轉(zhuǎn)換信息科學(xué)技術(shù)學(xué)院內(nèi)蒙古錫盟草原字符串和數(shù)的轉(zhuǎn)換int(x) :把字符串轉(zhuǎn)換成整數(shù) (x不會(huì)變成整數(shù),

int(x)這個(gè)表達(dá)式的值是整數(shù))float(x):把字符串x轉(zhuǎn)換成小數(shù)str(x):把x轉(zhuǎn)換成字符串eval(x):把字符串x看作一個(gè)python表達(dá)式,求其值初學(xué)者程序出現(xiàn)runtimeerror,多半是由于做了不合法的轉(zhuǎn)換,如int(x)而x為"a12"或"12.34",float(x)而x為"abc"46字符串和數(shù)的轉(zhuǎn)換a=15b="12"c=a+b#錯(cuò)誤的語(yǔ)句,字符串和整數(shù)無(wú)法相加print(a+int(b))#>>27b沒(méi)有變成整數(shù)int(b)這個(gè)表達(dá)式的值是個(gè)整數(shù)print(str(a)+b)#>>1512c=1+float("3.5")print(c) #>>4.5print(3+eval("4.5"))#>>7.5print(eval("3+2")) #>>5print(eval("3+a")) #>>1847小數(shù)到整數(shù)的轉(zhuǎn)換int(x)x是小數(shù),則去尾取整int(3.2) #3int(3.9) #3int("4.5") #runtimeerror,字符串內(nèi)容必須是整數(shù)的形式48Python數(shù)據(jù)類(lèi)型int

整數(shù) 123456899899float 小數(shù) 3.21.5E6complex 復(fù)數(shù) 1+2jstr

字符串 "hello"list 列表 [1,2,'ok',4.3]tuple 元組 (1,2,'ok',4.3)bool

布爾 TrueFalsedict

字典 {"tom":20,"jack":30}set 集合 {"tom",18,71}輸入輸出初步信息科學(xué)技術(shù)學(xué)院

郭煒新加坡金沙酒店無(wú)邊泳池輸出語(yǔ)句printprint(x,y,z)#也可以只輸出一項(xiàng)

連續(xù)輸出多項(xiàng),以空格分隔,然后換行print(x,y,z,end="")

連續(xù)輸出多項(xiàng),以空格分隔,不換行print(1,2,3,end="")print("ok")#>>123ok注意:做OpenJudge作業(yè)的時(shí)候,print里面慎用',',因?yàn)榭赡軙?huì)多出不該有的空格51輸入語(yǔ)句input格式:x=input(y)x是變量y是字符串,或任何值為字符串的表達(dá)式輸出y,并等待輸入。敲回車(chē)后輸入的字符串被賦值給x52最簡(jiǎn)單的能處理輸入的Python程序s=input("請(qǐng)輸入你的名字:")print(s+",你好!")注意:以后做OpenJudge作業(yè)的時(shí)候,input里面不要寫(xiě)任何東西s=input()4)如果程序需要輸入,則在PyCharm下方輸入,輸出結(jié)果也會(huì)出現(xiàn)在下方輸入語(yǔ)句inputinput()每次輸入一行,如果有多行輸入,就用多次input()初學(xué)者常犯錯(cuò)誤:如果輸入已經(jīng)結(jié)束(后面沒(méi)有輸入數(shù)據(jù)了),再進(jìn)行input(),就會(huì)產(chǎn)生runtimeerror不要多行輸入只用一次input,也不要一行輸入用多次input55在一行輸入3個(gè)整數(shù),輸出它們的和。a,b,c=input().split()#a,b,c即為在一行中輸入的,空格分隔開(kāi)的3個(gè)字符串a(chǎn)”67”b”45”c”38”同一行輸入多項(xiàng)數(shù)據(jù):列表初步信息科學(xué)技術(shù)學(xué)院

郭煒德國(guó)國(guó)王湖列表列表可以有0到任意多個(gè)元素,元素可以通過(guò)下標(biāo)訪問(wèn)empty=[]#空表list1=['Google','Runoob',1997,2000]list2=[1,2,3,4,5,6,7]print("list1[0]:",list1[0])#>>list1[0]:Googlelist1[2]=2001 #更改了列表中下標(biāo)為2的元素。a=2print("更新后的第三個(gè)元素為:",list1[a])#變量也能做下標(biāo)#>>更新后的第三個(gè)元素為:2001列表用in判斷列表是否包含某個(gè)元素lst=[1,2,3,"4",5]print(4inlst,3inlst,"4"inlst)#>>FalseTrueTrue實(shí)例:輸入兩個(gè)整數(shù)求和s=input()numbers=s.split()print(int(numbers[0])+int(numbers[1]))若輸入:34則:s為:"34"numbers為:["3","4"]輸出:7字符串分割成列表若x是字符串,則x.split()的值是一個(gè)列表,包含字符串x經(jīng)空格、制表符、換行符分隔得到的所有子串print("34\t\t45\n7".split())#>>['34','45','7']#\t是制表符,\n是換行符號(hào)

print("abcdhello".split())#>>['ab','cd','hello']

s="1234"

lst=s.split()

print(lst)#>>['12','34']print("abcd".split())#>>['abcd']print(input().split()[2][1])輸入為abcdef1234567輸出是:abcdef2dABD提交C單選題1分此題未設(shè)答案print(input().split()[2][1])輸入為abcdef1234567輸出是:abcdef2dABCD提交單選題1分程序頂格書(shū)寫(xiě)64程序每行前面不能留空格!(例外后面講)OK!亂加空格,錯(cuò)!學(xué)會(huì)看提示信息信息科學(xué)技術(shù)學(xué)院計(jì)算概論C教材Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版)郭煒編著人民郵電出版社慕課:中國(guó)大學(xué)MOOC實(shí)用Python程序設(shè)計(jì)/course/PKU-1460924165?from=searchPage算術(shù)運(yùn)算、邏輯運(yùn)算和分支語(yǔ)句信息科學(xué)技術(shù)學(xué)院68算術(shù)運(yùn)算信息科學(xué)技術(shù)學(xué)院寧夏中衛(wèi)沙坡頭算術(shù)運(yùn)算符Python支持以下算術(shù)運(yùn)算

+

加法

-

減法(雙操作數(shù)),取相反數(shù)(單操作數(shù))

*

乘法/除法

,結(jié)果是小數(shù)。即便能整除也是小數(shù) %取模(求余數(shù))

// 求商,結(jié)果取整數(shù)部分,不要余數(shù) **求冪算術(shù)表達(dá)式a=(3+2)*(6-3)/2print(a) #>>7.5print(10/8) #>>1.25print(10%8) #>>2print(15/4) #>>3.75print(15//4) #>>3print(3.4/2.2) #>>1.5454545454545452print(3.4//2.2) #>>1.0print(2**3) #>>8print(-9//4)#>>-3往小里取整算術(shù)表達(dá)式/計(jì)算的結(jié)果都是小數(shù),哪怕能整除z=10/2print(z) #>>5.0

-x

相當(dāng)于0-xa=10print(-a) #>>-10print(-a*3) #>>-30等價(jià)于(–a)*3print(3+-5)#>>-2算術(shù)表達(dá)式

有小數(shù)的算術(shù)表達(dá)式,結(jié)果就是小數(shù)z=10.0-10print(z) #>>0.0z=7.5–2.5print(z) #>>5.0print(2+0*4.5) #>>2.0print(2+10/5) #>>4.0

算術(shù)運(yùn)算符優(yōu)先級(jí)第一級(jí):

**第二級(jí): -(求相反數(shù))

第三級(jí): *///%第四級(jí): +-(減法)可以用()指定計(jì)算順序:(3+4)*(1+2)記不得優(yōu)先級(jí)就用()算術(shù)運(yùn)算的同時(shí)賦值

+= a+=b 等價(jià)于a=a+b

-= a-=b 等價(jià)于a=a-b

*=

/=

%=//=

**=算術(shù)運(yùn)算的同時(shí)賦值a=6a/=3print(a) #>>2.0a**=3print(a) #>>8.0常見(jiàn)問(wèn)題或注意事項(xiàng)數(shù)學(xué)上的運(yùn)算符號(hào)或代數(shù)式寫(xiě)法,不是拿到程序里就能直接用的!比如|x|在程序里并不能求x的絕對(duì)值,而是沒(méi)定義,會(huì)出錯(cuò)!2(x+3)(4+x)這樣的表達(dá)式也不能在程序里寫(xiě)!應(yīng)該寫(xiě):2*(x+3)*(4+x)乘法就一定要用'*'!2*b不能寫(xiě)成2b!常見(jiàn)問(wèn)題或注意事項(xiàng)/的結(jié)果一定是小數(shù)。一個(gè)算術(shù)表達(dá)式,只要有一個(gè)操作數(shù)是小數(shù),其結(jié)果就一定是小數(shù)。如果x是小數(shù)print(x)就會(huì)打出小數(shù)形式,哪怕x=4/2。如果題目要求是整數(shù),就要注意了,不要把整數(shù)當(dāng)小數(shù)打出來(lái)。print(4/2)打出2.0常見(jiàn)問(wèn)題或注意事項(xiàng)/是÷

,不是分?jǐn)?shù)線因此a/b*c是a÷

b×c,不是a/(b*c)print(4+6/2)的結(jié)果是77.05.05ACD提交B單選題1分此題未設(shè)答案print(4+6/2)的結(jié)果是77.05.05ABCD提交單選題1分關(guān)系運(yùn)算符

邏輯運(yùn)算符

邏輯表達(dá)式信息科學(xué)技術(shù)學(xué)院

郭煒韓國(guó)濟(jì)州島火山口六種關(guān)系運(yùn)算符用于比較大小相等

==不等

!=大于

>小于

<大于等于

>=小于等于

<=比較的結(jié)果是bool類(lèi)型,成立則為T(mén)rue,反之為Falsebool類(lèi)型數(shù)據(jù)只有兩種取值,True或False關(guān)系運(yùn)算符和bool類(lèi)型83print(3<5) #>>True

print(4!=7) #>>True

a=4

print(2<a<6<8) #>>True

print(2<a==4<6) #>>True

print(2<a>5) #>>False

b=a<6

print(b) #>>True

print(b==1) #>>True

print(b==2) #>>False

b=a>6

print(b==0) #>>Truea=True

print(a==1) #>>True關(guān)系運(yùn)算符和bool類(lèi)型84關(guān)系運(yùn)算符也能比較字符串(按字典序,大小寫(xiě)相關(guān))a="k" print(a=="k") #>>True

a="abc"

print(a=="abc") #>>True

print(a=="Abc") #>>False

print("abc"<"acd") #>>True

print("abc"<"abcd") #>>Trueprint("abc">"Abc") #>>True

關(guān)系運(yùn)算符和bool類(lèi)型85邏輯運(yùn)算符用于表達(dá)式的邏輯操作,有andornot三種,操作的結(jié)果是True或False與:exp1andexp2當(dāng)且僅當(dāng)exp1和exp2的值都為T(mén)rue(或相當(dāng)于True)時(shí),結(jié)果為T(mén)rue(或相當(dāng)于True)n=4

n>4andn<5 #false

n>=2andn<5andn%2==0#true

print(5andFalse)#>>False

print(4andTrue)#>>True邏輯運(yùn)算符和邏輯表達(dá)式86

0,""(空字符串),[](空表),None

都相當(dāng)于False(但除0以外都不等于False)

非0的數(shù),非空的字符串和非空列表,都相當(dāng)于True(但除1以外,都不等于True)True和1完全等價(jià),F(xiàn)alse和0完全等價(jià)True==1 #TrueFalse==0 #True""==False #False2==True #False[]==False #False[2,3]==True #False什么相當(dāng)于True或False87或:exp1orexp2當(dāng)且僅當(dāng)exp1和exp2的值都為False(或相當(dāng)于False)時(shí),結(jié)果為False

(或相當(dāng)于False) n=4

n>4orn<5#True

n<=2orn>5#False

邏輯運(yùn)算符和邏輯表達(dá)式88非:notexpexp值為T(mén)rue(或相當(dāng)于True)時(shí),結(jié)果為Falseexp值為False(或相當(dāng)于False)時(shí),結(jié)果為T(mén)rue not4<5 #False not5 #False not0 #True

not"abc" #False

not"" #True

not4<5and4>6 #False

not[] #True

not[1] #False

邏輯運(yùn)算符和邏輯表達(dá)式89print(3<4or4>5and1>2) #>>True

print((3<4or4>5)and1>2) #>>Falsenot4<5and4>6即(not4<5)and(4>6)邏輯運(yùn)算符的優(yōu)先級(jí)not>and>or90exp1andexp2:如果已經(jīng)算出表達(dá)式exp1為假,那么整個(gè)表達(dá)式的值肯定為假,于是表達(dá)式exp2就不需要再計(jì)算exp1orexp2:如果已經(jīng)算出exp1為真,那么整個(gè)表達(dá)式必定為真,于是exp2也不必計(jì)算邏輯運(yùn)算符和邏輯表達(dá)式邏輯表達(dá)式是短路計(jì)算的,即對(duì)邏輯表達(dá)式的計(jì)算,在整個(gè)表達(dá)式的值已經(jīng)能夠斷定的時(shí)候即會(huì)停止91

算術(shù)運(yùn)算符***///%+-

關(guān)系運(yùn)算符<>==!=<=>=邏輯運(yùn)算符 notandor記不得就勤用()print(3+2<5) #>>False

print(3+(2<5)) #>>4,因2<5相當(dāng)于1

各種運(yùn)算符的優(yōu)先級(jí)從高到低:92以下程序輸出幾個(gè)Trueprint([]==False)print(not[])print(0==False)print(1==True)print(not"")5432ABCD提交單選題1分條件分支語(yǔ)句(if語(yǔ)句)信息科學(xué)技術(shù)學(xué)院

郭煒美國(guó)加州太浩湖條件分支語(yǔ)句

有時(shí),并非所有的程序語(yǔ)句都要被順序執(zhí)行到,會(huì)希望滿(mǎn)足某種條件就執(zhí)行這部分語(yǔ)句,滿(mǎn)足另一條件就執(zhí)行另一部分語(yǔ)句。這就需要“條件分支語(yǔ)句”95條件分支語(yǔ)句96if表達(dá)式1:

語(yǔ)句組1elif

表達(dá)式2:

語(yǔ)句組2

...#可以有多種個(gè)elifelif表達(dá)式n:

語(yǔ)句組nelse:

語(yǔ)句組n+1

依次計(jì)算表達(dá)式1、表達(dá)式2…只要碰到一個(gè)表達(dá)式i為真(True或相當(dāng)于True),則執(zhí)行語(yǔ)句組i(前面為假的表達(dá)式對(duì)應(yīng)的語(yǔ)句組不會(huì)被執(zhí)行),且后面的表達(dá)式不再計(jì)算,后面的語(yǔ)句組也都不會(huì)被執(zhí)行。若所有表達(dá)式都為假(False或相當(dāng)于False),則執(zhí)行語(yǔ)句組n+1

注意,縮進(jìn)的前一行末尾有'

:'可以沒(méi)有elif,也可以沒(méi)有else,也可以都沒(méi)有條件分支語(yǔ)句if表達(dá)式1:

語(yǔ)句組1else:

語(yǔ)句組2if表達(dá)式1:

語(yǔ)句組1elif

表達(dá)式2:

語(yǔ)句組2if表達(dá)式1:

語(yǔ)句組1Python程序的語(yǔ)句前面不能加空格或制表符,除非:1.它在if語(yǔ)句中的某個(gè)“語(yǔ)句組”里面2.在for,while等語(yǔ)句的語(yǔ)句組里面3.在函數(shù)體里面4條件分支語(yǔ)句的縮進(jìn)98if語(yǔ)句中的語(yǔ)句組,每條語(yǔ)句左邊必須縮進(jìn),且縮進(jìn)情況必須一樣(對(duì)齊)ifint(input())==5:

print("a",end="")

print("b")

輸入:5 輸出:ab輸入:4 無(wú)輸出條件分支語(yǔ)句的縮進(jìn)99if語(yǔ)句中的語(yǔ)句組,每條語(yǔ)句左邊必須縮進(jìn),且縮進(jìn)情況必須一樣(對(duì)齊)ifint(input())==5:

print("a",end="")

print("b")

輸入:4 輸出:b條件分支語(yǔ)句的縮進(jìn)100if語(yǔ)句中的語(yǔ)句組,每條語(yǔ)句左邊必須縮進(jìn),且縮進(jìn)情況必須一樣(對(duì)齊)ifint(input())==5:

print("a",end="")

print("b")

出錯(cuò)!沒(méi)有對(duì)齊的縮進(jìn)!條件分支語(yǔ)句的縮進(jìn)101if"ok":

print(“ok”) #>>ok

if"":

print(“nullstring”) #不執(zhí)行,故無(wú)輸出

a=[4,2]

ifa:

print(a) #>>[4,2]

if20:

print(20) #>>20

if0:

print(0) #不執(zhí)行,故無(wú)輸出什么相當(dāng)于True或False102例題:

寫(xiě)一個(gè)判斷整數(shù)奇偶性的程序,要求輸入一個(gè)整數(shù),如果是奇數(shù),就輸出“It'sodd.”,如果是偶數(shù),就輸出“It'seven.”。ifint(input())%2==1:

print("It'sodd")

else:

print("It'seven")

if語(yǔ)句示例在一條if語(yǔ)句的某個(gè)分支(語(yǔ)句組)里,還可以再寫(xiě)if語(yǔ)句。a=int(input())

ifa>0:

ifa%2:

print("good")

else:

print("bad")輸入:

4 輸出:bad

輸入:

3 輸出:good輸入:

-1 無(wú)輸出if語(yǔ)句嵌套在一條if語(yǔ)句的某個(gè)分支(語(yǔ)句組)里,還可以再寫(xiě)if語(yǔ)句。a=int(input())

ifa>0:

ifa%2:

print("good")

else:

print("bad")輸入:

4 無(wú)輸出輸入:

3 輸出:good輸入:

-1 badif語(yǔ)句嵌套if語(yǔ)句實(shí)例例:輸入密碼password="python"userInput=input()#等待用戶(hù)輸入密碼ifuserInput==password:

#==判斷兩邊的表達(dá)式值是否相等print("對(duì)了!")else:print("錯(cuò)了")106信息科學(xué)技術(shù)學(xué)院郭煒?lè)种дZ(yǔ)句例題美國(guó)黃石公園大棱鏡溫泉if語(yǔ)句實(shí)例:溫度轉(zhuǎn)換程序tmpStr=input("請(qǐng)輸入帶有符號(hào)的溫度值:")#tmpStr是變量名,隨便取啥都行iftmpStr[-1]in['F','f']:#如果輸入華氏溫度

C=((float(tmpStr[0:-1]))-32)/1.8 print("轉(zhuǎn)換后的溫度是"+str(C)+"C")eliftmpStr[-1]in"Cc":#如果輸入攝氏溫度

F=1.8*eval(tmpStr[0:-1])+32 print("轉(zhuǎn)換后的溫度是"+str(F)+"F")#str將F轉(zhuǎn)字符串else: print("輸入格式錯(cuò)誤")#用float替代eval也可以請(qǐng)輸入帶有符號(hào)的溫度值:45F轉(zhuǎn)換后的溫度是7.222222222222222C請(qǐng)輸入帶有符號(hào)的溫度值:8.2C轉(zhuǎn)換后的溫度是46.76F字符串切片若s是一個(gè)字符串,則:s[x:y]是s的從下標(biāo)x到下標(biāo)y的左邊那個(gè)字符構(gòu)成的子串(切片)print("12345"[1:3]) #>>23a="abcdef"

print(a[2:-1]) #>>cdeprint(a[0:6]) #>>abcdef不要把if...else或if...elif...else寫(xiě)成多個(gè)ififa>5:

print("xxx")a=3

else:print(b)常見(jiàn)錯(cuò)誤ifa>5:

print("xxx")

a=3

ifa<=5print(b)=中可能把a(bǔ)的值改成了<=5。寫(xiě)多個(gè)if,哪些代碼會(huì)被執(zhí)行,哪些不會(huì)被執(zhí)行,很容易搞錯(cuò)。例題:請(qǐng)寫(xiě)一個(gè)程序,該程序輸入一個(gè)年份,根據(jù)該年份是否是建國(guó)整十周年、建黨整十周年以及是否是閏年給出不同的輸出。if語(yǔ)句嵌套year=int(input())

ifyear<=0:

print("Illegalyear")

else:

print("Legalyear.")

ifyear>1949and(year-1949)%10==0:#建國(guó)整十

print("Lukyyear.")

elifyear>1921andnot((year-1921)%10):#建黨整十

#只是為了演示not的用法,沒(méi)必要這么寫(xiě)

print("Goodyear.")

elifyear%4==0andyear%100oryear%400==0:

#year%100若不為0,則year%100就相當(dāng)于True print("Leapyear")#閏年

else:

print("Commonyear.")-2↙Illegalyear.

1959↙Legalyear.Lukyyear.

1931↙Legalyear.Goodyear.

2008↙Legalyear.Leapyear.

2013↙Legalyear.Commonyear.輸出格式控制信息科學(xué)技術(shù)學(xué)院甘肅張掖七彩丹霞(航拍)輸出格式控制字符串中的格式控制符:%s表示此處要輸出一個(gè)字符串%d表示此處要輸出一個(gè)整數(shù)%f表示此處要輸出一個(gè)小數(shù)%.nf表示此處要輸出一個(gè)小數(shù),保留小數(shù)點(diǎn)后面n位,四舍六入,五則可能入也可能舍。注意,有'.'

格式控制符只能出現(xiàn)在字符串中!輸出格式控制h=1.746print("Mynameis%s,Iam%.2fmtall."%("tom",h))print("Myageis%d."%18)print("%d%s"%(18,"hello"))print("%.2f,%.2f"%(5.225,5.325))#>>5.22,5.33輸出:Mynameistom,Iam1.75mtall.Myageis18.18hello5.22,5.33輸出格式控制name="tom"h=1.746"Mynameis%s,Iam%.2fmtall."%("tom",h)是個(gè)字符串。比下面這個(gè)等價(jià)字符串簡(jiǎn)潔:"Mynameis%s,"%name+"Iam%.2fmtall."%h常見(jiàn)問(wèn)題或注意事項(xiàng)題目:在一行輸入兩個(gè)小數(shù)x,y,請(qǐng)輸出(x+y)*x的值,保留小數(shù)點(diǎn)后面5位錯(cuò)誤解法:s=input().split()x,y=float(s[0]),float(s[1])m='%.5f'%(x+y)z=float(m)*xprint("%.5f"%z)常見(jiàn)問(wèn)題或注意事項(xiàng)錯(cuò)誤解法:s=input().split()x,y=float(s[0]),float(s[1])m='%.5f'%(x+y)z=float(m)*xprint("%.5f"%z)x+y本來(lái)就是小數(shù)沒(méi)有必要先轉(zhuǎn)成字符串,又轉(zhuǎn)成小數(shù)。結(jié)果要保留小數(shù)點(diǎn)后面5位,并非中間的計(jì)算過(guò)程也要保留小數(shù)點(diǎn)后面5位信息科學(xué)技術(shù)學(xué)院119

實(shí)用Python程序設(shè)計(jì)循環(huán)語(yǔ)句信息科學(xué)技術(shù)學(xué)院120for循環(huán)語(yǔ)句信息科學(xué)技術(shù)學(xué)院

郭煒內(nèi)蒙古阿斯哈圖石林循環(huán)語(yǔ)句有時(shí),需要重復(fù)多次執(zhí)行一系列語(yǔ)句,因此需要循環(huán)語(yǔ)句122for循環(huán)語(yǔ)句for<variable>in<sequence>:<statements1>else:<statements2>依次對(duì)sequence中的每個(gè)值,執(zhí)行<statements1>然后再執(zhí)行<statements2>。通常不需要else部分sequence可以是range(..),也可以是字符串、列表、元組、字典、集合123for循環(huán)語(yǔ)句foriinrange(5):#[0,5)print(i)01234foriinrange(5,9):#[5,9)print(i)5678124for循環(huán)語(yǔ)句foriinrange(0,10,3):#步長(zhǎng)3print(i)0369foriinrange(-10,-100,-30):print(i)-10-40-70125for循環(huán)語(yǔ)句foriinrange(0): print(i)無(wú)輸出foriinrange(2,2):print(i)無(wú)輸出126foriinrange(3,12,3):print(i,"",end="")輸出結(jié)果是:36936912345678910113456789101112BCD提交A單選題1分此題未設(shè)置答案,請(qǐng)點(diǎn)擊右側(cè)設(shè)置按鈕foriinrange(3,12,3):print(i,"",end="")輸出結(jié)果是:36936912345678910113456789101112ABCD提交單選題1分for循環(huán)遍歷列表–寫(xiě)法1a=['Google','Baidu','IBM','Taobao','QQ']foriinrange(len(a)): #len,求列表長(zhǎng)度(元素個(gè)數(shù))print(i,a[i])0Google1Baidu2IBM3Taobao4QQlen也可以用來(lái)求字符串長(zhǎng)度,元組、集合、字典元素個(gè)數(shù)print(len("abc"))#>>3129for循環(huán)遍歷列表–寫(xiě)法2a=['Google','Baidu','IBM','Taobao','QQ']foriina: print(i)GoogleBaiduIBMTaobaoQQ130for循環(huán)遍歷字符串forletterin'Taobao': print(letter)Taobao131break語(yǔ)句sites=["Baidu","Google","IBM","Taobao"]forsiteinsites:ifsite=="IBM":print("OK")print("site:

"+site)else:print("Nobreak")print("Done!")132site:Baidusite:GoogleOKsite:IBMsite:TaobaoNobreakDone!break語(yǔ)句sites=["Baidu","Google","IBM","Taobao"]#listforsiteinsites:#對(duì)sites中的每個(gè)值siteifsite=="IBM":print("OK")

break #跳出循環(huán)

print("site:

"+site)else:print("Nobreak")print("Done!")else子句在循環(huán)結(jié)束時(shí)會(huì)執(zhí)行,但是如果break了,則不會(huì)執(zhí)行133site:Baidusite:GoogleOKDone!continue語(yǔ)句forletterin'Taobao':

ifletter=='o':#字母為o時(shí)跳過(guò)輸出

continue #直接跳到下次循環(huán)print('當(dāng)前字母:',letter)當(dāng)前字母:T當(dāng)前字母:a當(dāng)前字母:b當(dāng)前字母:a134連續(xù)輸出26個(gè)字母foriinrange(26):

print(chr(ord("a")+i),end="")

abcdefghijklmnopqrstuvwxyz字母的ASCII編碼是連續(xù)的135字符的編碼ord(x)求字符x的編碼(字符就是長(zhǎng)度為1的字符串)chr(x)求編碼為x的字符可以用8個(gè)連續(xù)的0或1(即1個(gè)字節(jié))來(lái)表示一個(gè)字母、數(shù)字或標(biāo)點(diǎn)符號(hào),比如用“00100000”表示空格,用“01100001”表示字母“a”,用“01100010”表示字母“b”,用“01100011”表示字母“c”……。由8個(gè)0或者1的組成的串,一共有28即256種不同的組合,這就足以表示10個(gè)阿拉伯?dāng)?shù)字以及英語(yǔ)中用到的所有字母和標(biāo)點(diǎn)符號(hào)了。此即為ASCII編碼方案。136連續(xù)輸出0-9foriinrange(10):print(chr(ord("0")+i),end="")0123456789'0'-'9'的ASCII編碼是連續(xù)的137print(chr(ord("A")+4))結(jié)果是10169EeABD提交C單選題1分此題未設(shè)置答案,請(qǐng)點(diǎn)擊右側(cè)設(shè)置按鈕print(chr(ord("A")+4))結(jié)果是10169EeABCD提交單選題1分for循環(huán)例題信息科學(xué)技術(shù)學(xué)院郭煒俄羅斯圣彼得堡圣以撒教堂例題1.輸入n個(gè)整數(shù)求和輸入第一行是整數(shù)n,n>=1后面有n行,每行一個(gè)整數(shù)輸出輸出后面那n個(gè)整數(shù)的和樣例輸入3128樣例輸出11

141例題1.輸入n個(gè)整數(shù)求和n=int(input())total=0foriinrange(n):#做n次 total+=int(input())#每次讀入一行print(total)

142例題2.從小到大輸出n的因子輸入一個(gè)正整數(shù)n,從小到大輸出它的所有因子n=int(input())

forxinrange(1,n+1):

ifn%x==0:

print(x,"",end="")15↙13515143例題3.從大到小輸出n的因子輸入一個(gè)正整數(shù)n,從大到小輸出它的所有因子

n=int(input())

forxinrange(n,0,-1):#步長(zhǎng)-1

ifn%x==0:

print(x,"",end="")

15↙15531144多重循環(huán)信息科學(xué)技術(shù)學(xué)院

郭煒美國(guó)拱門(mén)國(guó)家公園多重循環(huán)循環(huán)可以嵌套,形成多重循環(huán):

foriinrange(n):

forjinrange(m):

#內(nèi)重循環(huán)的執(zhí)行次數(shù)一共是n×m次

146多重循環(huán)例題1:多次求n個(gè)數(shù)的和輸入第一行是整數(shù)m,m>=1,表示有m組數(shù)據(jù)接下來(lái)就是m組數(shù)據(jù)對(duì)于每組數(shù)據(jù):第一行是整數(shù)n,n>=1接下來(lái)是n行,每行一個(gè)整數(shù)輸出對(duì)每組數(shù)據(jù),輸出后面那n個(gè)整數(shù)的和147樣例輸入2312321020樣例輸出630多重循環(huán)例題1:多次求n個(gè)數(shù)的和m=int(input())foriinrange(m):#m組數(shù)據(jù),所以要處理m次

n=int(input())total=0foriinrange(n):#n個(gè)數(shù),每個(gè)一行,所以要inputn次

total+=int(input())print(total)148total=0foriinrange(2):forjinrange(1,3):total+=i+jprint(total)輸出結(jié)果是:681012ACD提交B單選題1分此題未設(shè)置答案,請(qǐng)點(diǎn)擊右側(cè)設(shè)置按鈕total=0foriinrange(2):forjinrange(1,3):total+=i+jprint(total)輸出結(jié)果是:681012ABCD提交單選題1分例題:給定正整數(shù)n和m,在1至n這n個(gè)數(shù)中,取出兩個(gè)不同的數(shù),使得其和是m的因子,問(wèn)有多少種不同的取法。輸出這些取法。151多重循環(huán)例題2:取兩個(gè)數(shù)例題:給定正整數(shù)n和m,在1至n這n個(gè)數(shù)中,取出兩個(gè)不同的數(shù),使得其和是m的因子,問(wèn)有多少種不同的取法。輸出這些取法。思路:窮舉1-n這n個(gè)數(shù)中取兩個(gè)數(shù)的所有取法,對(duì)每一種取法,判斷其和是不是m的因子152多重循環(huán)例題2:取兩個(gè)數(shù)例題:給定正整數(shù)n和m,在1至n這n個(gè)數(shù)中,取出兩個(gè)不同的數(shù),使得其和是m的因子,問(wèn)有多少種不同的取法。輸出這些取法。思路:窮舉1-n這n個(gè)數(shù)中取兩個(gè)數(shù)的所有取法,對(duì)每一種取法,判斷其和是不是m的因子第一個(gè)數(shù)取1,第二個(gè)數(shù)分別取2,3,n第一個(gè)數(shù)取2,第二個(gè)數(shù)分別取3,4,n第一個(gè)數(shù)取n-2,第二個(gè)數(shù)分別取n-1,n第一個(gè)數(shù)取n-1,第二個(gè)數(shù)取n153多重循環(huán)例題3例題:給定正整數(shù)n和m,在1至n這n個(gè)數(shù)中,取出兩個(gè)不同的數(shù),使得其和是m的因子,問(wèn)有多少種不同的取法。輸出這些取法。total=0#取法總數(shù)

lst=input().split()

n,m=int(lst[0]),int(lst[1])

foriinrange(1,n):#取第一個(gè)數(shù)i,共n-1種取法

forjinrange(i+1,n+1):#第二個(gè)數(shù)要比第一個(gè)數(shù)大,以免取法重復(fù)

ifm%(i+j)==0:

print(i,j)

total+=1

print(total)

154918↙121518242736457多重循環(huán)例題3只會(huì)跳出當(dāng)前那重循環(huán),不會(huì)跳出多重循環(huán)例題:給定正整數(shù)n和m,在1至n這n個(gè)數(shù)中,取出兩個(gè)不同的數(shù)x,y,使得x<y且x+y是m的因子。要求輸出的數(shù)對(duì)里面,x不重復(fù),且y盡可能小。輸出這些取法。lst=input().split()n,m=int(lst[0]),int(lst[1])foriinrange(1,n):#取第一個(gè)數(shù)i,共n-1種取法

forjinrange(i+1,n+1):#第二個(gè)數(shù)要比第一個(gè)數(shù)大,以免取法重復(fù)

ifm%(i+j)==0:print(i,j)

break#后面的j不用再取了,直接換下一個(gè)i155多重循環(huán)中的break918↙12243645只會(huì)回到當(dāng)前那重循環(huán)的開(kāi)頭156多重循環(huán)中的continuewhile循環(huán)信息科學(xué)技術(shù)學(xué)院

郭煒荷蘭阿姆斯特丹庫(kù)肯霍夫公園while循環(huán)語(yǔ)句while

邏輯表達(dá)式exp

:

語(yǔ)句組1else:

語(yǔ)句組2判斷exp是否為真,若為真,轉(zhuǎn)2),若為假,轉(zhuǎn)3)執(zhí)行語(yǔ)句組1,回到1)執(zhí)行語(yǔ)句組2繼續(xù)往下執(zhí)行158while循環(huán)語(yǔ)句while

邏輯表達(dá)式exp

:

語(yǔ)句組1判斷exp是否為真,若為真,轉(zhuǎn)2),若為假,轉(zhuǎn)3)執(zhí)行語(yǔ)句組1,回到1)繼續(xù)往下執(zhí)行159while循環(huán)語(yǔ)句count=0whilecount<5:print(count,"小于5")count=count+1else:print(count,"大于或等于5")1600小于51小于52小于53小于54小于55大于或等于5while循環(huán)語(yǔ)句whileTrue:

ifexp:

break

不停執(zhí)行,直到exp為真時(shí)跳出循環(huán)161連續(xù)輸出26個(gè)字母i=0

whilei<26:

print(chr(ord("a")+i),end="")

i+=1

abcdefghijklmnopqrstuvwxyz字母的ASCII編碼是連續(xù)的162while循環(huán)語(yǔ)句示例1例題:輸入一個(gè)正整數(shù)n,從小到大輸出它的所有因子n=int(input())

x=1

whilex<=n:

ifn%x==0:

print(x,"",end="")

x+=1

15↙13515163while循環(huán)語(yǔ)句示例2例題:提示用戶(hù)輸入密碼,密碼不正確則提示不正確,

然后要求輸入,密碼正確則提示成功,然后結(jié)束。密碼是pkuwhile(input("請(qǐng)輸入密碼:")!="pku"): print("密碼不正確!")print("密碼輸入成功!") 請(qǐng)輸入密碼:bba↙密碼不正確!請(qǐng)輸入密碼:std↙密碼不正確!請(qǐng)輸入密碼:pku↙密碼輸入成功!164while循環(huán)語(yǔ)句示例2輸入三個(gè)整數(shù),求它們的最小公倍數(shù)解法:枚舉,一個(gè)個(gè)試s=input().split()x,y,z=int(s[0]),int(s[1]),int(s[2])n=1whileTrue:ifn%x==0andn%y==0andn%z==0:print(n)

breakn=n+1165while循環(huán)語(yǔ)句示例2輸入三個(gè)整數(shù),求它們的最小公倍數(shù)解法:枚舉,一個(gè)個(gè)試s=input().split()x,y,z=int(s[0]),int(s[1]),int(s[2])n=1whilenot(n%x==0andn%y==0andn%z==0): n+=1print(n)166while循環(huán)語(yǔ)句示例2輸入三個(gè)整數(shù),求它們的最小公倍數(shù),改進(jìn)解法改進(jìn)之處:即便是枚舉,沒(méi)必要試的,也不要去試,這樣速度才快s=input().split()x,y,z=int(s[0]),int(s[1]),int(s[2])n=m=max(x,y,z)#從三者里面最大的開(kāi)始試whileTrue:ifn%x==0andn%y==0andn%z==0:print(n)break

n+=m#沒(méi)必要一個(gè)個(gè)試,而是每隔m個(gè)試一下(還可進(jìn)一步改進(jìn))167異常處理信息科學(xué)技術(shù)學(xué)院

郭煒錫林郭勒草原平頂山用while語(yǔ)句和異常處理進(jìn)行輸入在Openjudge做題時(shí),有些題目,輸入數(shù)據(jù)沒(méi)有結(jié)束標(biāo)志,也不告訴你有多少數(shù)據(jù)。例如:輸入若干行,每行若干整數(shù),求所有整數(shù)的最大值輸入樣例出樣例:87如何判斷輸入結(jié)束,就是需要解決的問(wèn)題169用while語(yǔ)句和異常處理進(jìn)行輸入輸入若干行,每行若干整數(shù),求所有整數(shù)的最大值s=input()lst=s.split()maxV=int(lst[0])try:#異常處理whileTrue:lst=s.split()forxinlst:maxV=max(maxV,int(x))s=input()#輸入數(shù)據(jù)已經(jīng)沒(méi)有了還執(zhí)行input,會(huì)產(chǎn)生異常except:pass #pass語(yǔ)句啥都不做print(maxV)15

236↙531↙34↙Ctrl+Z↙23170異常處理try:<語(yǔ)句組1>except:<語(yǔ)句組2>如果在<語(yǔ)句組1>執(zhí)行過(guò)程中出現(xiàn)了異常(runtimeerror),程序立即從語(yǔ)句組1中跳出,去執(zhí)行<語(yǔ)句組2>,然后再繼續(xù)往下執(zhí)行。如果<語(yǔ)句組1>執(zhí)行正常完,則程序繼續(xù)往下執(zhí)行,不會(huì)執(zhí)行<語(yǔ)句組2>常見(jiàn)的異常有:不合適的轉(zhuǎn)換,例如int("abc")int("23.34")float("abc")輸入已經(jīng)結(jié)束(已經(jīng)沒(méi)有輸入數(shù)據(jù)了)后,還執(zhí)行input()在openjudge做題常見(jiàn)除法除數(shù)為0整數(shù)和字符串相加5)列表下標(biāo)越界(比如3個(gè)元素的列表用到了下標(biāo)4)171異常處理try:n=int(input())print("hello")a=100/nprint(a)except:print("error")print("end")1725↙hello20.0end0↙helloerrorendabc↙errorend循環(huán)綜合例題信息科學(xué)技術(shù)學(xué)院

郭煒舊金山九曲花街例題1.求斐波那契數(shù)列第k項(xiàng)菲波那契數(shù)列是指這樣的數(shù)列:數(shù)列的第一個(gè)和第二個(gè)數(shù)都為1,接下來(lái)每個(gè)數(shù)都等于前面2個(gè)數(shù)之和。給出一個(gè)正整數(shù)k,要求菲波那契數(shù)列中第k個(gè)數(shù)是多少。

輸入:輸入一行,包含一個(gè)正整數(shù)k。(1<=k<=46)輸出:輸出一行,包含一個(gè)正整數(shù),表示菲波那契數(shù)列中第k個(gè)數(shù)的大小樣例輸入19樣例輸出4181174解法:迭代,不停地由已知推未知k=int(input())ifk==1ork==2:print(1)else:a1=a2=1foriinrange(k-2):a1,a2=a2,a1+a2print(a2)例題1.求斐波那契數(shù)列第k項(xiàng)例題2.求階乘的和給定正整數(shù)n,求不大于n的正整數(shù)的階乘的和(即求1!+2!+3!+...+n!)輸入輸入有一行,包含一個(gè)正整數(shù)n(1<n<12)。輸出輸出有一行:階乘的和。樣例輸入5樣例輸出153176例題2.求階乘的和解法1:n=int(input())s=0foriinrange(1,n+1):f=1#存放i階乘

forjinrange(1,i+1):f*=j#此操作一共做1+2+3+...+n次

s+=fprint(s)重復(fù)計(jì)算多。比如算3!時(shí)算了一遍1*2*3,算4!時(shí)又算一遍1*2*3改進(jìn):1*2*3只要算一遍就應(yīng)該記下來(lái),下次算4!直接用它177例題2.求階乘的和更快的解法2:n=int(input())s,f=0,1foriinrange(1,n+1):f*=is+=fprint(s)f值變化過(guò)程:1*2,1*2*3,1*2*3*4178例題3.輸入正整數(shù)n(n>=2),求不大于n的全部質(zhì)數(shù)解法1:n=int(input())foriinrange(2,n+1):#每次判斷i是否是質(zhì)數(shù)

ok=True #開(kāi)始假設(shè)i是質(zhì)數(shù)forkinrange(2,i):ifi%k==0:ok=Falsebreakifok:print(i)179例題3.輸入正整數(shù)n(n>=2),求不大于n的全部質(zhì)數(shù)解法1:n=int(input())foriinrange(2,n+1):#每次判斷i是否是質(zhì)數(shù)

ok=True #開(kāi)始假設(shè)i是質(zhì)數(shù)forkinrange(2,i):ifi%k==0:ok=Falsebreakifok:print(i)#此解法做了沒(méi)必要的嘗試,偶數(shù),以及k大于i的平方根后就不必再試180例題3.輸入正整數(shù)n(n>=2),求不大于n的全部質(zhì)數(shù)改進(jìn)的解法2:n=int(input())print(2)foriinrange(3,n+1,2):#步長(zhǎng)2,只判斷奇數(shù)

ok=Trueforkinrange(3,i,2):ifi%k==0:ok=Falsebreakifk*k>i:#大于根號(hào)i的數(shù)就不用試了breakifok:print(i)181信息科學(xué)技術(shù)學(xué)院182

實(shí)用Python程序設(shè)計(jì)函數(shù)和遞歸信息科學(xué)技術(shù)學(xué)院183函數(shù)信息科學(xué)技術(shù)學(xué)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論