版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.0、命令行常用命令命令行(Windows下叫“命令提示符”,Mac下叫“終端”)里的常用命令。打開(kāi)命令行,我們會(huì)看到每行前面都有諸如C:Documents and SettingsCrossin或者M(jìn)yMacBook: crossin$之類(lèi)的。這個(gè)提示符表示了當(dāng)前命令行所在目錄。第一個(gè)常用的命令是:dir (windows環(huán)境下)ls (mac環(huán)境下)dir和ls的作用差不多,都是顯示出當(dāng)前目錄下的文件和文件夾。第二個(gè)常用命令是:cd 目錄名通過(guò)dir或ls了解當(dāng)前目錄的結(jié)構(gòu)之后,可以通過(guò)“cd 目錄名”的方式,進(jìn)入到當(dāng)前目錄下的子目錄里。如果要跳回到上級(jí)目錄,可以用命令:cd .另外,Wi
2、ndows下如果要寫(xiě)換盤(pán)符,需要輸入盤(pán)符:比如從c盤(pán)切換到d盤(pán) C:Documents and SettingsCrossind:有了以上兩個(gè)命令,就可以在文件目錄的迷宮里游蕩了。雖然沒(méi)可視化的目錄下的操作那么直觀(guān),但是會(huì)顯得你更像個(gè)程序員。于是乎,再說(shuō)個(gè)高階玩法:現(xiàn)在你可以不用idle那套東西了,隨便找個(gè)順手的文本軟件,把你的代碼寫(xiě)好,保存好,最好是保存成py文件。然后在命令行下進(jìn)入到py文件保存的目錄,使用命令:python 程序保存的文件名就可以運(yùn)行你寫(xiě)的程序了。一、關(guān)于分號(hào)“;”在C、Java等語(yǔ)言的語(yǔ)法中規(guī)定,必須以分號(hào)作為語(yǔ)句結(jié)束的標(biāo)識(shí)。Python也支持分號(hào),同樣用于一條語(yǔ)句的結(jié)
3、束標(biāo)識(shí)。但在Python中分號(hào)的作用已經(jīng)不像C、Java中那么重要了,Python中的分號(hào)可以省略,主要通過(guò)換行來(lái)識(shí)別語(yǔ)句的結(jié)束。例如,以下兩行代碼是等價(jià)的:1. print hello world!2. print hello world!;第1行代碼的輸出結(jié)果:hello world!第2行代碼的輸出結(jié)果:hello world!如果要在一行中書(shū)寫(xiě)多條句,就必須使用分號(hào)分隔每個(gè)語(yǔ)句,否則Python無(wú)法識(shí)別語(yǔ)句之間的間隔:1. # 使用分號(hào)分隔語(yǔ)句2. x=1; y=1 ; z=1第2行代碼有3條賦值語(yǔ)句,語(yǔ)句之間需要用分號(hào)隔開(kāi)。如果不隔開(kāi)語(yǔ)句,Python解釋器將不能正確解釋?zhuān)崾菊Z(yǔ)法錯(cuò)
4、誤:SyntaxError: invalid syntax注意分號(hào)不是Python推薦使用的符號(hào),Python傾向于使用換行符作為每條語(yǔ)句的分隔,簡(jiǎn)單直白是Python語(yǔ)法的特點(diǎn)。通常一行只寫(xiě)一條語(yǔ)句,這樣便于閱讀和理解程序。一行寫(xiě)多條語(yǔ)句的方式是不好的習(xí)慣。二、關(guān)于連行符“ ” (雙反斜杠好像不可以,已測(cè)試)Python同樣支持多行寫(xiě)一條語(yǔ)句,Python使用“”作為連行符。在實(shí)踐中,一條語(yǔ)句寫(xiě)在多行也是非常常見(jiàn)的。【例】把SQL語(yǔ)句作為參數(shù)傳遞給函數(shù),由于SQL的語(yǔ)句一般非常長(zhǎng),為了閱讀方便,因此需要換行書(shū)寫(xiě)。1. # 字符串的換行2. # 寫(xiě)法一3. sql = select id,na
5、me 4. from dept 5. where name = A6. print sql7. # 寫(xiě)法二8. sql = select id,name 9. from dept 10. where name = A11. print sql寫(xiě)法一只使用了一對(duì)雙引號(hào),把SQL語(yǔ)句分為select、from、where等3部分分別書(shū)寫(xiě)。第6行代碼輸出結(jié)果:select id,name from dept where name = A寫(xiě)法二使用了3對(duì)雙引號(hào),select、from、where分別對(duì)應(yīng)一對(duì)雙引號(hào)。第11行代碼輸出結(jié)果:select id,name from dept where na
6、me = A第二種寫(xiě)法比第一種寫(xiě)法的可讀性更強(qiáng),可以使用空格和制表符對(duì)齊語(yǔ)句,使代碼顯得更工整。對(duì)于簡(jiǎn)短的語(yǔ)句不推薦換行的寫(xiě)法,這種寫(xiě)法只會(huì)造成閱讀的復(fù)雜性。下面這段程序是不合理的換行寫(xiě)法:1. # 一條語(yǔ)句寫(xiě)在多行2. print 3. hello world!第2行第3行代碼是一個(gè)整體,調(diào)用print輸出“hello world!”,這種情況不適合分行書(shū)寫(xiě)。三、關(guān)于單引號(hào)和雙引號(hào)雙引號(hào)和單引號(hào)都是可以用的,只不過(guò)用單引號(hào)的時(shí)候可以在字符串里面使用雙引號(hào)。同理,使用雙引號(hào)時(shí)也可以在字符串里面使用單引號(hào)先說(shuō)1個(gè)雙引號(hào)與3個(gè)雙引號(hào)的區(qū)別,雙引號(hào)所表示的字符串通常要寫(xiě)成一行如:s1 = hello
7、,world如果要寫(xiě)成多行,那么就要使用(“連行符”),如s2 = hello,worlds2與s1是一樣的。如果你用3個(gè)雙引號(hào)的話(huà),就可以直接寫(xiě)了,如下:s3 = hello,world,hahaha.,那么s3實(shí)際上就是hello,n world,n hahaha., 注意“n”,所以,如果你的字符串里n很多,你又不想在字符串中用n的話(huà),那么就可以使用3個(gè)雙引號(hào)。而且使用3個(gè)雙引號(hào)還可以在字符串中增加注釋?zhuān)缦拢簊3 = hello, #hoho, this is hello, 在3個(gè)雙引號(hào)的字符串內(nèi)可以有注釋哦world, #hoho, this is worldhahaha.這里我試過(guò)
8、一下,確實(shí)可以加注釋?zhuān)贿^(guò)在print s3的時(shí)候連注釋內(nèi)容會(huì)一起給打印出來(lái)這就是3個(gè)雙引號(hào)和1個(gè)雙引號(hào)表示字符串的區(qū)別了,3個(gè)雙引號(hào)與1個(gè)單引號(hào)的區(qū)別也是和這個(gè)一樣的,實(shí)際上python支持單引號(hào)是有原因的,下面我來(lái)比較1個(gè)單引號(hào)和1個(gè)雙引號(hào)的區(qū)別。當(dāng)我用單引號(hào)來(lái)表示一個(gè)字符串時(shí),如果要表示 Lets go 這個(gè)字符串,必須這樣:s4 = Lets go,注意沒(méi)有,字符串中有一個(gè),而字符串又是用來(lái)表示,所以這個(gè)時(shí)候就要使用轉(zhuǎn)義符 , 如果你的字符串中有一大堆的轉(zhuǎn)義符,看起來(lái)肯定不舒服,python也很好的解決了這個(gè)問(wèn)題,如下:s5 = Lets go對(duì)于雙引號(hào),也是一樣的,下面舉個(gè)例子s6
9、= I realy like python!這就是單引號(hào)和雙引號(hào)都可以表示字符串的原因了。例子:(1) print (Stay hungry,n #這里換行符n必須寫(xiě)在雙引號(hào)里面 stay foolish.n - Steve Jobs)(2) print (Stay hungry, #這里用了三個(gè)單引號(hào),沒(méi)用換行符stay foolish.- Steve Jobs)(3) print (Stay hungry, #這里用了三個(gè)雙引號(hào),沒(méi)用換行符stay foolish.- Steve Jobs)這三個(gè)輸出的結(jié)果都是三行:Stay hungry,stay foolish.- Steve Jobs
10、(4) print (Stay hungry, stay foolish. - Steve Jobs)這個(gè)輸出的結(jié)果是一行:Stay hungry, stay foolish. - Steve Jobs四、關(guān)于注釋符用井號(hào)作為注釋一行#此處為注釋一般用(三個(gè)英文引號(hào))也可以注釋多行,不過(guò)一般用來(lái)表示函數(shù)文檔此處是注釋此函數(shù)功能為。五、邏輯量True和 False 首字母必須大寫(xiě)Python中的None:None是一個(gè)特殊的常量。None和False不同。None不是0。None不是空字符串。None和任何其他的數(shù)據(jù)類(lèi)型比較永遠(yuǎn)返回False。None有自己的數(shù)據(jù)類(lèi)型NoneType。你可以將N
11、one復(fù)制給任何變量,但是你不能創(chuàng)建其他NoneType對(duì)象。六、if語(yǔ)句,ifelifelse語(yǔ)句,while循環(huán),for循環(huán), break和continueif 條件: #注意冒號(hào)必須有選擇執(zhí)行的語(yǔ)句 #注意這里有四個(gè)空格的縮進(jìn)if, elif, else可組成一個(gè)整體的條件語(yǔ)句:if是必須有的;elif可以沒(méi)有,也可以有很多個(gè),每個(gè)elif條件不滿(mǎn)足時(shí)會(huì)進(jìn)入下一個(gè)elif判斷;else可以沒(méi)有,如果有的話(huà)只能有一個(gè),必須在條件語(yǔ)句的最后。if a = 1: print oneelif a = 2: print twoelse: print too manywhile 條件: #注意冒號(hào)必
12、須有 選擇執(zhí)行的語(yǔ)句 #注意這里有四個(gè)空格的縮進(jìn)for i in range(1, 101): #i從1取到100 print i注:range(x, y, c)表示一個(gè)list:x, x+c, x+2c, , y-c。如果沒(méi)有第三個(gè)參數(shù)c, 默認(rèn)c=1.breakwhile 循環(huán)在條件不滿(mǎn)足時(shí) 結(jié)束,for 循環(huán)遍歷完序列后 結(jié)束。如果在循環(huán)條件仍然滿(mǎn)足或序列沒(méi)有遍歷完的時(shí)候,想要強(qiáng)行跳出循環(huán),就需要用到break語(yǔ)句。continuebreak是徹底地跳出循環(huán),而continue只是略過(guò)本次循環(huán)的余下內(nèi)容,直接進(jìn)入下一次循環(huán)。七、 變量命名規(guī)則python在定義一個(gè)變量時(shí)不需要給它限定類(lèi)型
13、。變量會(huì)根據(jù)賦給它的值,自動(dòng)決定它的類(lèi)型。你也可以在程序中,改變它的值,于是也就改變了它的類(lèi)型。變量命名時(shí)第一個(gè)字符必須是字母或者下劃線(xiàn)“_”, 剩下的部分可以是字母、下劃線(xiàn)“_”或數(shù)字(0-9)變量名稱(chēng)是對(duì)大小寫(xiě)敏感的,myname和myName不是同一個(gè)變量。八、字符串的輸出和運(yùn)算字符串之間可以通過(guò)加法連接起來(lái):str1 = goodstr2 = byeprint (str1 + str2)print (very + str1)print (str1 + and + str2)print (My age is + str(18)num = 18print (My age is %d %nu
14、m) #注意,%num可以直接用%18代替,但是%num和字符串之間不能加逗號(hào),只能是空格(沒(méi)有空格也可以)print (Today is %s. % Friday)print (Price is %.2f % 4.99)注意:%d表示整數(shù),%s表示字符串,%f表示浮點(diǎn)數(shù),%.4f表示帶4位小數(shù)的浮點(diǎn)數(shù)print (%ss score is %d % (Mike, 87))無(wú)論你有多少個(gè)值需要代入字符串中進(jìn)行格式化,只需要在字符串中的合適位置用對(duì)應(yīng)格式的%表示,然后在后面的括號(hào)中按順序提供代入的值就可以了。占位的%和括號(hào)中的值在數(shù)量上必須相等,類(lèi)型也要匹配。(Mike, 87)這種用()表示的
15、一組數(shù)據(jù)在python中被稱(chēng)為元組(tuple),是python的一種基本數(shù)據(jù)結(jié)構(gòu),以后我們還會(huì)用到。九、變量強(qiáng)制類(lèi)型轉(zhuǎn)換int(x) #把x轉(zhuǎn)換成整數(shù)float(x) #把x轉(zhuǎn)換成浮點(diǎn)數(shù)str(x) #把x轉(zhuǎn)換成字符串bool(x) #把x轉(zhuǎn)換成bool值例如,以下等式的結(jié)果均為真:int(123) = 123float(3.3) = 3.3str(111) = 111bool(0) = False bool(abc) = Truebool(False) = Truebool() = False并不是所有的值都能做類(lèi)型轉(zhuǎn)換,比如int(abc)同樣會(huì)報(bào)錯(cuò),python沒(méi)辦法把它轉(zhuǎn)成一個(gè)數(shù)。關(guān)
16、于bool類(lèi)型的轉(zhuǎn)換,在python中,以下數(shù)值會(huì)被認(rèn)為是False:為0的數(shù)字,包括0,0.0空字符串,包括,表示空值的None (None是python中的一個(gè)特殊值,表示什么都沒(méi)有,它和0、空字符、False、空集合都不一樣)空集合,包括(),其他的值都認(rèn)為是True。十、函數(shù)如果我們要寫(xiě)一個(gè)函數(shù),就需要去定義它。Python里定義函數(shù)的關(guān)鍵字是def,格式如下:def sayHello(): print hello world!我們用sayHello()來(lái)調(diào)用這個(gè)函數(shù)。(注意括號(hào)必須帶著)return是函數(shù)的結(jié)束語(yǔ)句,return后面的值被作為這個(gè)函數(shù)的返回值。函數(shù)中任何地方的retu
17、rn被執(zhí)行到的時(shí)候,這個(gè)函數(shù)就會(huì)結(jié)束。十一、list列表格式:用中括號(hào)包圍、逗號(hào)隔開(kāi)的一組元素;列表中的元素可以是不同的類(lèi)型。例如,range(1,10)或者1, 2, 3, 4, 5, 6, 7, 8, 9;I = 365, everyday, 0.618, True。操作list:1. 訪(fǎng)問(wèn)list中的元素python計(jì)數(shù)是從0開(kāi)始,例如I0=365, I1= everyday2. 修改list中的元素修改list中的某一個(gè)元素,只需要直接給那個(gè)元素賦值就可以了:l0 = 123注意如下例子:c=1,2,3b=ca=cb0=2print a 得到 a=2,2,3特別注意:如果用一個(gè)list
18、賦值給另一個(gè)list,但是想要改變一個(gè)list的時(shí)候另一個(gè)不變,這時(shí)需用如下賦值方法: a=1,2b=b0 : len(a)=a0 : len(a)b.append(3)print a 得到1,2print b 得到1,2,33. 向list中添加元素list有一個(gè)append方法,可以增加元素。以I這個(gè)列表為例,調(diào)用的方法是:I.append(1024) #注意這里是小括號(hào)輸出I,你會(huì)看到123, everyday, 0.618, True, 1024,1024被添加到了I,成為最后一個(gè)元素。(第一個(gè)元素在上一步被改成了123。)然后同樣可以用I4得到1024。4. 刪除list中的元素刪除
19、list中的某一個(gè)元素,要用到del:del I0,然后輸出I,得到everyday, 0.618, True, 1024。這時(shí)候再調(diào)用I0,會(huì)得到everyday,其他元素的序號(hào)也相應(yīng)提前。例子,#= 點(diǎn)球小游戲 =#from random import choiceprint Choose one side to shoot:print left, center, rightyou = raw_input()print You kicked + youdirection = left, center, rightcom = choice(direction)print Computer s
20、aved + comif you != com: print Goal!else: print Oops.5. 求和:例如 sum(1,2,3)=6, sum(range(101)=5050list有兩類(lèi)常用操作:索引(index)和切片(slice)。用加序號(hào)訪(fǎng)問(wèn)的方法就是索引操作。除了指定位置進(jìn)行索引外,list還可以處理負(fù)數(shù)的索引,例如I-1表示l中的最后一個(gè)元素,l-3表示倒數(shù)第3個(gè)元素。切片操作符是在內(nèi)提供一對(duì)可選數(shù)字,用冒號(hào)分割。冒號(hào)前的數(shù)表示切片的開(kāi)始位置,冒號(hào)后的數(shù)字表示切片到哪里結(jié)束。同樣,計(jì)數(shù)從0開(kāi)始。注意,開(kāi)始位置包含在切片中,而結(jié)束位置不包括。例如,I = 365, e
21、veryday, 0.618, True,I1:3得到的結(jié)果是everyday, 0.618。如果不指定第一個(gè)數(shù),切片就從列表第一個(gè)元素開(kāi)始。如果不指定第二個(gè)數(shù),就一直到最后一個(gè)元素結(jié)束。都不指定,則返回整個(gè)列表的一個(gè)拷貝。I:3 I1: I:同索引一樣,切片中的數(shù)字也可以使用負(fù)數(shù)。比如:I1:-1 得到everyday, 0.618十二、字符串的索引和切片(類(lèi)似list的操作)1. 遍歷通過(guò)for.in可以遍歷字符串中的每一個(gè)字符。word = helloworldfor c in word:print c2. 索引訪(fǎng)問(wèn)通過(guò)加索引的方式,訪(fǎng)問(wèn)字符串中的某個(gè)字符。word0= hword-2=
22、 l與list不同的是,字符串不能通過(guò)索引訪(fǎng)問(wèn)去更改其中的字符。word1 = a 這樣的賦值是錯(cuò)誤的。3. 切片通過(guò)兩個(gè)參數(shù),截取一段子串,具體規(guī)則和list相同。print word5:7print word:-5print word:4. 連接字符join方法也可以對(duì)字符串使用,與list的join用法類(lèi)似。 ,.join(word)= h,e,l,l,o,w,o,r,l,d十三、字符串的分割 - list假設(shè)需要把一個(gè)句子中的每一個(gè)單詞拿出來(lái)單獨(dú)處理。sentence = I am an English sentence這時(shí)就需要對(duì)字符串進(jìn)行分割: sentence.split()字符
23、串.split()會(huì)把字符串按照其中的空格進(jìn)行分割,分割后的每一段都是一個(gè)新的字符串,最終返回這些字符串組成一個(gè)list。于是得到I, am, an, English, sentence除了空格外,split()同時(shí)也會(huì)按照換行符n,制表符t進(jìn)行分割。所以應(yīng)該說(shuō),split默認(rèn)是按照空白字符進(jìn)行分割。之所以說(shuō)默認(rèn),是因?yàn)閟plit還可以指定分割的符號(hào)。比如你有一個(gè)很長(zhǎng)的字符串 section =Hi. I am the one. Bye. 通過(guò)指定分割符號(hào)為.,可以把每句話(huà)分開(kāi):section.split(.)得到Hi, I am the one, Bye, 。這時(shí)候,.作為分割符被去掉了,而
24、空格仍然保留在它的位置上。注意最后那個(gè)空字符串。每個(gè).都會(huì)被作為分割符,即使它的后面沒(méi)有其他字符,也會(huì)有一個(gè)空串被分割出來(lái)。例如 aaa.split(a) 將會(huì)得到, , , ,由四個(gè)空串組成的list。十四、連接list-字符串join:和split正好相反,join把一個(gè)list中的所有字符串連接成一個(gè)字符串,而split是把一個(gè)字符串分割成很多字符串組成的list。join的格式有些奇怪,它不是list的方法,而是字符串的方法。首先需要有一個(gè)字符串作為list中所有元素的連接符,然后再調(diào)用這個(gè)連接符的join方法,join的參數(shù)是被連接的list:例如:s = ; li = apple,
25、 pear, orange fruit = s.join(li) print fruit 得到結(jié)果apple;pear;orange。又例如:.join(hello, world)得到helloworld,字符串被無(wú)縫連接在一起。十一*、元組 (tuple)元組(tuple)也是一種序列,和我們用了很多次的list類(lèi)似,只是元組中的元素在創(chuàng)建之后就不能被修改。例如position = (1, 2)geeks = (Sheldon, Leonard, Rajesh, Howard)都是元組的實(shí)例。它有和list同樣的索引、切片、遍歷等操作: 1. print postion02. for g i
26、n geeks:3. print g4. print geeks1:3其實(shí)我們之前一直在用元組,就是在print語(yǔ)句中: print %s is %d years old % (Mike, 23)(Mike, 23)就是一個(gè)元組。這是元組最常見(jiàn)的用處。再來(lái)看一下元組作為函數(shù)返回值的例子: 1. def get_pos(n):2. return (n/2, n*2)得到這個(gè)函數(shù)的返回值有兩種形式,一種是根據(jù)返回值元組中元素的個(gè)數(shù)提供變量: 1. x, y = get_pos(50)2. print x3. print y這就是我們?cè)陂_(kāi)頭那句代碼中使用的方式。還有一種方法是用一個(gè)變量記錄返回的元組
27、: 1. pos = get_pos(50)2. print pos03. print pos1十五、讀文件新建個(gè)文件,就叫它data.txt。在里面隨便寫(xiě)上一些話(huà),保存。把這個(gè)文件放在接下來(lái)你打算保存代碼的文件夾下,這么做是為了方便我們的程序找到它。 打開(kāi)一個(gè)文件的命令很簡(jiǎn)單:file(文件名)這里的文件名可以用文件的完整路徑,也可以是相對(duì)路徑。因?yàn)槲覀儼岩x取的文件和代碼放在了同一個(gè)文件夾下,所以只需要寫(xiě)它的文件名就夠了。f = file(data.txt) #注意這里f不是字符串,是文件對(duì)象 但這一步只是打開(kāi)了一個(gè)文件,并沒(méi)有得到其中的內(nèi)容。變量f保存了這個(gè)文件,還需要去讀取它的內(nèi)容。你
28、可以通過(guò)read()函數(shù)把文件內(nèi)所有內(nèi)容讀進(jìn)一個(gè)字符串中。data = f.read() #這里data是字符串 做完對(duì)文件的操作之后,記得用close()關(guān)閉文件,釋放資源。完整程序示例:f = file(data.txt)data = f.read()print dataf.close()讀取文件內(nèi)容的方法還有:readline() #讀取一行內(nèi)容readlines() #把內(nèi)容按行讀取至一個(gè)list中去替換程序的第二行,看看它們的區(qū)別。十六、寫(xiě)文件打開(kāi)文件的幾種模式:python默認(rèn)是以只讀模式打開(kāi)文件。如果想要寫(xiě)入內(nèi)容,在打開(kāi)文件的時(shí)候需要指定打開(kāi)模式為寫(xiě)入: f = file(out
29、put.txt, w)w就是writing,以這種模式打開(kāi)文件,原來(lái)文件中的內(nèi)容會(huì)被你新寫(xiě)入的內(nèi)容覆蓋掉,如果文件不存在,會(huì)自動(dòng)創(chuàng)建文件。不加參數(shù)時(shí),file為你默認(rèn)為r,reading,只讀模式,文件必須存在,否則引發(fā)異常。 另外還有一種模式是f = file(output.txt, a),其中a是appending。它也是一種寫(xiě)入模式,但你寫(xiě)入的內(nèi)容不會(huì)覆蓋之前的內(nèi)容,而是添加到文件中。 打開(kāi)文件還有一種方法,就是open(),用法和file()是一致的。寫(xiě)文件:寫(xiě)入內(nèi)容的方法同樣簡(jiǎn)單:f.write(a string you want to write)write的參數(shù)可以是一個(gè)字符串,
30、或者一個(gè)字符串變量。示例程序:data = I will be in a file.nSo cool!out = open(output.txt, w)out.write(data)out.close()在你的程序保存目錄下,打開(kāi)output.txt就會(huì)看到結(jié)果。類(lèi)似的,writelines(list) #把list的每一個(gè)元素寫(xiě)成一行 沒(méi)有writeline(list)。十七、處理文件中的數(shù)據(jù)比如我現(xiàn)在拿到一份文檔,里面有某個(gè)班級(jí)里所有學(xué)生的平時(shí)作業(yè)成績(jī)。因?yàn)槊總€(gè)人交作業(yè)的次數(shù)不一樣,所以成績(jī)的數(shù)目也不同,沒(méi)交作業(yè)的時(shí)候就沒(méi)有分。我現(xiàn)在需要統(tǒng)計(jì)每個(gè)學(xué)生的平時(shí)作業(yè)總得分。看一下我們的文檔里的數(shù)
31、據(jù):#- scores.txt劉備 23 35 44 47 51關(guān)羽 60 77 68張飛 97 99 89 91諸葛亮 1001. 先把文件讀進(jìn)來(lái):f = file(scores.txt)2. 取得文件中的數(shù)據(jù)。因?yàn)槊恳恍卸际且粭l學(xué)生成績(jī)的記錄,所以用readlines,把每一行分開(kāi),便于之后的數(shù)據(jù)處理:lines = f.readlines()f.close()提示:在程序中,經(jīng)常使用print來(lái)查看數(shù)據(jù)的中間狀態(tài),可以便于你理解程序的運(yùn)行。比如這里你可以print lines,看一下內(nèi)容被存成了什么格式。3. 對(duì)每一條數(shù)據(jù)進(jìn)行處理。按照空格,把姓名、每次的成績(jī)分割開(kāi):for line i
32、n lines:data = line.split() #這里data是list接下來(lái)的4、5兩個(gè)步驟都是針對(duì)一條數(shù)據(jù)的處理,所以都是在for循環(huán)的內(nèi)部。4. 整個(gè)程序最核心的部分到了。如何把一個(gè)學(xué)生的幾次成績(jī)合并,并保存起來(lái)呢?我的做法是:對(duì)于每一條數(shù)據(jù),都新建一個(gè)字符串,把學(xué)生的名字和算好的總成績(jī)保存進(jìn)去。最后再把這些字符串一起保存到文件中:sum = 0for score in data1:sum += int(score)result = %st: %dn % (data0, sum)這里幾個(gè)要注意的點(diǎn): 對(duì)于每一行分割的數(shù)據(jù),data0是姓名,data1:是所有成績(jī)組成的列表。每次循
33、環(huán)中,sum都要先清零。 score是一個(gè)字符串,為了做計(jì)算,需要轉(zhuǎn)成整數(shù)值int。 result中,我加了一個(gè)制表符t和換行符n,讓輸出的結(jié)果更好看些。5. 得到一個(gè)學(xué)生的總成績(jī)后,把它添加到一個(gè)list中。results.append(result) #這里results是listresults需要在循環(huán)之前初始化results = 6. 最后,全部成績(jī)處理完畢后,把results中的內(nèi)容保存至文件。因?yàn)閞esults是一個(gè)字符串組成的list,這里我們直接用writelines方法:output = file(result.txt, w)output.writelines(results
34、)outpus.close()十八、異常處理在python中,可以使用try.except語(yǔ)句來(lái)處理異常。做法是,把可能引發(fā)異常的語(yǔ)句放在try-塊中,把處理異常的語(yǔ)句放在except-塊中。例如:try:f = file(non-exist.txt)print File opened!f.close()except:print File not exists.print Done十九、字典dictionarypython中的基本類(lèi)型-字典(dictionary):字典這種數(shù)據(jù)結(jié)構(gòu)有點(diǎn)像我們平常用的通訊錄,有一個(gè)名字和這個(gè)名字對(duì)應(yīng)的信息。在字典中,名字叫做“鍵(key)”,對(duì)應(yīng)的內(nèi)容信息叫做“
35、值(value)”。字典就是一個(gè)鍵/值對(duì)的集合。鍵/值對(duì)用冒號(hào)分割,每個(gè)對(duì)之間用逗號(hào)分割,整個(gè)字典包括在花括號(hào)中。d = key1 : value1, key2 : value2 舉個(gè)簡(jiǎn)單的字典例子:score = 蕭峰: 95, 段譽(yù): 97,虛竹: 89 關(guān)于字典的鍵要注意的是:1.鍵必須是唯一的;2.鍵只能是簡(jiǎn)單對(duì)象,比如字符串、整數(shù)、浮點(diǎn)數(shù)、bool值。list就不能作為鍵,但是 可以作為值。3.python字典中的鍵/值對(duì)沒(méi)有順序,我們無(wú)法用索引訪(fǎng)問(wèn)字典中的某一項(xiàng),而是要用鍵來(lái)訪(fǎng)問(wèn)。例如print score段譽(yù) 或者print score.get(段譽(yù))。如果你的鍵是字符串,通過(guò)鍵
36、訪(fǎng)問(wèn)的時(shí)候就需要加引號(hào),如果是數(shù)字作為鍵則不用。注意,字典類(lèi)的get方法是按照給定key尋找對(duì)應(yīng)項(xiàng),如果不存在這樣的key,就返回空值None4.字典也可以通過(guò)for.in遍歷:for name in score:print scorename #這里要用中括號(hào)或者 print score.get(name) #這里要用小括號(hào) 注意,遍歷的變量中存儲(chǔ)的是字典的鍵。5.如果要改變某一項(xiàng)的值,就直接給這一項(xiàng)賦值: score虛竹 = 916.增加一項(xiàng)字典項(xiàng)的方法是,給一個(gè)新鍵賦值: score慕容復(fù) = 887.刪除一項(xiàng)字典項(xiàng)的方法是del: del score蕭峰 注意,這個(gè)鍵必須已存在于字典中
37、。8.如果你想新建一個(gè)空的字典,只需要: d = 二十、模塊python自帶了功能豐富的標(biāo)準(zhǔn)庫(kù),另外還有數(shù)量龐大的各種第三方庫(kù)。使用這些功能的基本方法就是使用模塊。通過(guò)函數(shù),可以在程序里重用代碼;通過(guò)模塊,則可以重用別的程序中的代碼。 模塊可以理解為是一個(gè)包含了函數(shù)和變量的py文件。在你的程序中引入了某個(gè)模塊,就可以使用其中的函數(shù)和變量。來(lái)看一個(gè)我們之前使用過(guò)的模塊: import randomimport語(yǔ)句告訴python,我們要用random模塊中的內(nèi)容。然后便可以使用random中的方法,比如:random.randint(1, 10) random.randchoic(1, 3, 5)注意,函數(shù)前面需要加上“random.”,這樣python才知道你是要調(diào)用random中的方法。想知道random有哪些函數(shù)和變量,可以用dir()方法:dir(random)如果你只是用到random中的某一個(gè)函數(shù)或變量,也可以通過(guò)from.import.指明:from random import randint;from math import piprint pi等同于import m
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 康服務(wù)與管理導(dǎo)論
- 2025年度汽車(chē)運(yùn)輸合同履約保證金范本
- 湖北省部分省級(jí)示范高中2024-2025學(xué)年高一上學(xué)期1月期末考試歷史試卷(含答案)
- 二零二五年度甜品店轉(zhuǎn)讓及轉(zhuǎn)租經(jīng)營(yíng)管理合同
- 2025年度二零二五年度房產(chǎn)買(mǎi)賣(mài)合同解除與房屋交接及違約責(zé)任協(xié)議
- 2025年度結(jié)伴自駕游極限探險(xiǎn)合同
- 2025年度珠寶首飾購(gòu)銷(xiāo)合同圖片制作與鑒定服務(wù)合同
- 二零二五年度版員工零工經(jīng)濟(jì)聘用合同
- 2025年度水田承包與農(nóng)村土地確權(quán)登記合作合同
- 康復(fù)兒童家長(zhǎng)培訓(xùn)
- 三年級(jí)上冊(cè)遞等式計(jì)算練習(xí)300題及答案
- 政治畫(huà)像品德操守自我評(píng)價(jià)3篇
- 奶茶督導(dǎo)述職報(bào)告
- 山東萊陽(yáng)核電項(xiàng)目一期工程水土保持方案
- 白熊效應(yīng)(修訂版)
- 視頻監(jiān)控維保項(xiàng)目投標(biāo)方案(技術(shù)標(biāo))
- 社會(huì)組織能力建設(shè)培訓(xùn)
- 立項(xiàng)報(bào)告蓋章要求
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫(xiě)申請(qǐng)范本
- 主變壓器試驗(yàn)報(bào)告模板
評(píng)論
0/150
提交評(píng)論