[Python学习] 专题二.条件语句和循环语句的基础知识
??????? 前面講述了"專題一.函數(shù)的基礎(chǔ)知識",而這篇文章講述的Python的條件語句和循環(huán)語句的基礎(chǔ)知識.主要內(nèi)容包括:
??????? 1.條件語句:包括單分支、雙分支和多分支語句,if-elif-else
??????? 2.循環(huán)語句:while的使用及簡單網(wǎng)絡(luò)刷博器爬蟲
??????? 3.循環(huán)語句:for的使用及遍歷列表、元組、文件和字符串
前言: 語句塊
??????? 在講訴條件語句、循環(huán)語句和其他語句之前,先來補充語句塊知識.(前面講函數(shù)時已經(jīng)用到過)
??????? 語句塊并非一種語句,它是在條件為真(條件語句)時執(zhí)行或執(zhí)行多次(循環(huán)語句)的一組語句.在代碼前放置空格或tab字符來縮進(jìn)語句即可創(chuàng)建語句塊.很多語言特殊單詞或字符(如begin或{)來表示一個語句塊的開始,用另外的單詞或字符(如end或})來表示語句塊的結(jié)束.
?????? 而在Python中使用冒號(:)來標(biāo)識語句塊的開始,塊中每一個語句都是縮進(jìn)的(縮進(jìn)量相同).當(dāng)回退到和已經(jīng)閉合的塊一樣的縮進(jìn)量時,就表示當(dāng)前塊已經(jīng)結(jié)束.
一. 條件語句if
??????? if分支語句表達(dá)式基本類型常見的有一下三種:
??????? 1.單分支語句
????????它的基本格式是:
????????????????????????????????? if condition:
????????????????????????????????????????? statement
??????????????????????????????????????????statement
??????? 需要注意的是Ptthon中if條件語句條件無需圓括號(),條件后面需要添加冒號,它沒有花括號{}而是使用TAB實現(xiàn)區(qū)分.其中condition條件判斷通常有布爾表達(dá)式(True|False 0-假|(zhì)1-真 非0即真)、關(guān)系表達(dá)式(>= <= == !=)和邏輯運算表達(dá)式(and or not).
??????? 2.雙分支語句
????????它的基本格式是:
????????????????????????????????? if condition:
????????????????????????????????????????? statement
??????????????????????????????????????????statement
??????????????????????????????????else:
????????????????????????????????????????? statement
????????????????????????????????????????? statement
??????? 3.多分支語句
??????? if多分支由if-elif-else組成,其中elif相當(dāng)于else if,同時它可以使用多個if的嵌套.具體代碼如下所示:
二. 循環(huán)語句while
??????? while循環(huán)語句的基本格式如下:
???????????????????????????????????????????????????????? while condition:
???????????????????????????????????????????????????????????????? statement
?????????????????????????????????????????????????????????????????statement
???????????????????????????????????????????????????????? else:
???????????????????????????????????????????????????????????????? statement
?????????????????????????????????????????????????????????????????statement
??????? 其中判斷條件語句condition可以為布爾表達(dá)式、關(guān)系表達(dá)式和邏輯表達(dá)式,else可以省略(此處列出為與C語言等區(qū)別).舉個例子:
??????? 它的輸出結(jié)果為5050,當(dāng)時當(dāng)i加到101時,由于i>100將執(zhí)行else語句.
??????? 需要注意的是Python中使用井號(#)表示行注釋,使用三引號('''...''')表示多行注釋.區(qū)別于C/C++的//行注釋和/**/多行注釋.
??????? 下面講述一段代碼刷博器爬蟲,先給出代碼再講解:
??????? 在搜狐博客或新浪博客中只要在新窗口打開就會增加瀏覽訪問次數(shù),所以上面的代碼主要是通過調(diào)用webbrowser瀏覽器的open_new_tab打開新的窗口,而CSDN不行(估計綁定用戶或ip有關(guān)).
????????上面代碼中windoes命令taskkill的作用是殺掉應(yīng)用程序IE瀏覽器,在DOS中輸入"taskkill /F /IM iexplore.exe"可以強行關(guān)閉應(yīng)用程序(chrome.exe或qq.exe),其中/F表示強行終止程序,/IM表示圖像.在該程序中主要的作用是清除內(nèi)存,防止內(nèi)存消耗太大出現(xiàn)死機現(xiàn)象;但是需要調(diào)用import os的system()函數(shù)打開,而Linux下用kill命令(kill -pid或killall)終止進(jìn)程.
????????代碼中time.sleep(seconds)表示"Delay execution for a given number of seconds.",從打開到加載有一定時間.
????????當(dāng)你需要大量增加瀏覽量時可以使用兩層循環(huán)嵌套,每次打開5個網(wǎng)頁在關(guān)閉在執(zhí)行100次,這樣你的內(nèi)存也不會因為消耗太大出現(xiàn)死機現(xiàn)象,也可以使用import random count=random.randint(20,40)產(chǎn)生20到40隨機數(shù)來執(zhí)行外層循環(huán).代碼比較簡單,主要是想通過它介紹些Python的基礎(chǔ)知識.但是初次打開IE瀏覽器會出現(xiàn)打開次數(shù)不一致的錯誤.why?
三. 循環(huán)語句for
??????? 該循環(huán)語句的基礎(chǔ)格式為:
???????????????????????????????????????????????? for target in sequences:
???????????????????????????????????????????????????????? statements
????????target表示變量名,sequences表示序列,常見類型有l(wèi)ist(列表)、tuple(元組)、strings(字符串)和files(文件).
????????Python的for沒有體現(xiàn)出循環(huán)的次數(shù),不像C語言的for(i=0;i<10;i++)中i循環(huán)計數(shù),Python的for指每次從序列sequences里面的數(shù)據(jù)項取值放到target里,取完即結(jié)束,取多少次循環(huán)多少次.其中in為成員資格運算符,檢查一個值是否在序列中.同樣可以使用break和continue跳出循環(huán).
??????? 1.字符串循環(huán)
??????? 注意:如果在print結(jié)尾加上逗號,那么接下來語句會與前一條語句在同一行打印.故上面輸出顯示一行.
??????? 2.列表循環(huán)
????????注意:列表List由一堆數(shù)據(jù)用逗號間隔,方括號括起,可以是同類型也可以是不同類型.format(i,'2d')相當(dāng)于輸出兩位,不足的補空格.當(dāng)輸出0-9時顯示"口0",而輸出10-99時顯示"10"實現(xiàn)對其功能.輸出結(jié)果如下:
1 32 43 54 x5 12.5 out for??????? 因為迭代(循環(huán)另一種說法)某范圍的數(shù)字是很常用的,所以有個內(nèi)建的范圍函數(shù)range供使用.列表中for n in [1,2,3,4,5,6,7,8]相當(dāng)于listNum=range(1,9).其格式"range(start, stop[, step]) -> list of integers",它的工作方式類似于分片,它包含下限(本例range(1,9)中為1),但不包含上限(本例中9),如果希望下限為0,可以只提供上限如range(4)=[0,1,2,3].
????????產(chǎn)生1到100的數(shù)字range(1,101),輸出1到100的奇數(shù)range(1,101,2),輸出1到100的偶數(shù)range(2,101,2).
??????? 3.元組循環(huán)
??????? 元組tuple每個數(shù)據(jù)項不可修改,只可讀,而序列l(wèi)ist[1,2,3,4]可以修改.
??????? 4.文件循環(huán)
??????? help(file.read)返回一個字符串."read([size]) -> read at most size bytes, returned as a string."
??????? help(file.readlines)返回一個列表."readlines([size]) -> list of strings, each a line from the file."相當(dāng)于讀n行,由n次readline組成,讀出的字符串構(gòu)成列表.
??????? help(file.readline)從某個文件讀一行."readline([size]) -> next line from the file, as a string."
??????? 輸出顯示:
#第一個read()輸出:每個字符間有個空格 s 1 = ' E a s t m o u n t o f C S D N ' f o r c i n s 1 : .... End #第二個readlines()輸出:讀取的是一行 s1 = 'Eastmount of CSDN' for c in s1: .... End #第三個readline()輸出:讀取for.py文件第一行并輸出 s 1?? =?? ' E a s t m o u n t?? o f?? C S D N ' End??????? 如果需要文件輸出也可以通過下面代碼實現(xiàn),使用w會覆蓋而a+是追加功能,后面講文件詳細(xì)敘述.
??????? for r in open('test.txt','r').readlines():
??????????????? open('test.txt','a+').write(c)
??????? PS:我主要是通過《Python基礎(chǔ)教程》和"51CTO學(xué)院 智普教育的python視頻"學(xué)習(xí).所以文中引用了很多視頻中的知識、書籍知識和自己的知識,感謝那些作者和老師,希望文章對大家有所幫助,才開始學(xué)習(xí)python知識,如果文章中有錯誤或不足之處,還請海涵,也希望大家提出意見與君共勉.勿噴~
??????? (By:Eastmount 2014-9-22 夜7點?原創(chuàng)CSDN?http://blog.csdn.net/eastmount/)
總結(jié)
以上是生活随笔為你收集整理的[Python学习] 专题二.条件语句和循环语句的基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Python学习] 专题一.函数的基础
- 下一篇: [Python学习] 专题三.字符串的基