本文主要介紹了Python條件語句和迴圈語句的基礎。主要內容包括: 1.條件語句:包括單分支、雙分支和多分支語句,if-elif-else;2.循環語句:while的使用及簡單網絡刷博器爬蟲;3.循環語句:for的使用及遍歷列表、元組、文件和字串。
這篇文章所述的Python的條件語句和循環語句的基礎知識。主要內容包括:
1.條件語句:包括單分支、雙分支和多分支語句,if-elif-else
2.循環語句:while的使用及簡單網路刷博器爬蟲
3.循環語句: for的使用及遍歷列表、元組、文件和字串
前言: 語句塊
在講訴條件語句、循環語句和其他語句之前,先來補充語句塊知識.(前面講函數時已經用到過)
語句塊並非一種語句,它是在條件為真(條件語句)時執行或執行多次(循環語句)的一組語句.在程式碼前放置空格或tab字元來縮排語句即可創建語句塊.很多語言特殊單字或字元(如begin或{)來表示一個語句塊的開始,用另外的單字或字元(如end或})來表示語句區塊的結束.
而在Python中使用冒號(:)來標識語句區塊的開始,區塊中每一個語句都是一個縮排的(縮排量相同).當回退到和已經閉合的區塊一樣的縮排量時,就表示當前區塊已經結束.
一.條件語句if
if分支語句表達式基本型別常見的有一下三種:
1.單分支語句
它的基本格式是:
if condition: statement statement
#需要注意的是Ptthon中if條件語句條件無需圓括號() ,條件後面需要加冒號,它沒有花括號{}而是使用TAB實作區分.其中condition條件判斷通常有布林表達式(True|False 0-假|1-真非0即真)、關係表達式( >=
2.雙分支語句
#它的基本格式是:
if condition: statement statement else: statement statement
#3.多分支語句
if多分支由if-elif-else組成,其中elif相當於else if,同時它可以使用多個if的嵌套.具體程式碼如下所示:
#双分支if-else count = input("please input:") print 'count=',count if count>80: print 'lager than 80' else: print 'lower than 80' print 'End if-else' #多分支if-elif-else number = input("please input:") print 'number=',number if number>=90: print 'A' elif number>=80: print 'B' elif number>=70: print 'C' elif number>=60: print 'D' else: print 'No pass' print 'End if-elif-else' #条件判断 sex = raw_input("plz input your sex:") if sex=='male' or sex=='m' or sex=='man': print 'Man' else: print 'Woman'
二. 迴圈語句while
while迴圈語句的基本格式如下:
while condition: statement statement else: statement statement
#其中判斷條件語句condition可以為布林表達式、關係表達式和邏輯表達式,else可以省略(此處列出為與C語言等區別).舉個例子:
#循环while计数1+2+..+100 i = 1 s = 0 while i <= 100: s = s+i i = i+1 else: print 'exit while' print 'sum = ',s ''''' 输出结果为:exit while sum = 5050 '''
它的輸出結果為5050,當時當i加到101時,由於i>100將執行else語句.
#需要注意的是Python中使用井號(#)表示行註解,使用三引號('''...''')表示多行註解.區別於C/C++的//行註解和/**/多行註釋.
下面講述一段程式碼刷博器爬蟲,先給程式碼再講解:
import webbrowser as web import time import os i=0 while i<5: web.open_new_tab('http://andy111.blog.sohu.com/46684846.html') i=i+1 time.sleep(0.8) else: os.system('taskkill /F /IM iexplore.exe') print 'close IE'
在搜狐部落格或新浪部落格只要在新視窗開啟就會增加瀏覽造訪次數,所以上面的程式碼主要是透過呼叫webbrowser瀏覽器的open_new_tab開啟新的視窗,而CSDN不行(估計綁定使用者或ip有關).
上面程式碼中windoes指令taskkill的作用是殺掉應用程式IE瀏覽器,在DOS中輸入"taskkill /F /IM iexplore.exe"可以強行關閉應用程式(chrome.exe或qq.exe),其中/F表示強行終止程式,/IM表示映像.在該程式中主要的作用是清除記憶體,防止記憶體消耗太大出現死機現象;但是需要呼叫import os的system()函數打開,而Linux下用kill指令(kill -pid或killall)終止行程.
程式碼中time.sleep(seconds)表示"Delay execution for a given number of seconds.",從打開到加載有一定時間.
當你需要大量增加瀏覽量時可以使用兩層循環嵌套,每次打開5個網頁在關閉在執行100次,這樣你的記憶體也不會因為消耗太大出現死機現象,也可以使用import random count=random.randint(20,40)產生20到40隨機數來執行外層循環.程式碼比較簡單,主要是想透過它介紹些Python的基礎知識.但是初次開啟IE瀏覽器會出現開啟次數不一致的錯誤.why?
三.循環語句for
##該循環語句的基礎格式為:for target in sequences: statements
target表示变量名,sequences表示序列,常见类型有list(列表)、tuple(元组)、strings(字符串)和files(文件).
Python的for没有体现出循环的次数,不像C语言的for(i=0;i
1.字符串循环
s1 = 'Eastmount of CSDN' for c in s1: print c,
注意:如果在print结尾加上逗号,那么接下来语句会与前一条语句在同一行打印.故上面输出显示一行.
2.列表循环
list1 = [1,3,4,5,'x',12.5] i = 0 for val in list1: print format(i,'2d'),val i = i+1 else: print 'out for'
注意:列表List由一堆数据用逗号间隔,方括号括起,可以是同类型也可以是不同类型.format(i,'2d')相当于输出两位,不足的补空格.当输出0-9时显示"口0",而输出10-99时显示"10"实现对其功能.输出结果如下:
1 3 2 4 3 5 4 x 5 12.5 ut for
因为迭代(循环另一种说法)某范围的数字是很常用的,所以有个内建的范围函数range供使用.列表中for n in [1,2,3,4,5,6,7,8]相当于listNum=range(1,9).其格式"range(start, stop[, step]) -> list of integers",它的工作方式类似于分片,它包含下限(本例range(1,9)中为1),但不包含上限(本例中9),如果希望下限为0,可以只提供上限如range(4)=[0,1,2,3].
产生1到100的数字range(1,101),输出1到100的奇数range(1,101,2),输出1到100的偶数range(2,101,2).
3.元组循环
tup = (1,2,3,4,5) for n in tup: print n else: print 'End for'
元组tuple每个数据项不可修改,只可读,而序列list[1,2,3,4]可以修改.
4.文件循环
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."相当于读n行,由n次readline组成,读出的字符串构成列表.
help(file.readline)从某个文件读一行."readline([size]) -> next line from the file, as a string."
#文件循环遍历三种对比 for n in open('for.py','r').read(): print n, print 'End' for n in open('for.py','r').readlines(): print n, print 'End' for n in open('for.py','r').readline(): print n, print 'End'
输出显示:
#第一个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
如果需要文件输出也可以通过下面代码实现,使用w会覆盖而a+是追加功能,后面讲文件详细叙述.
for r in open('test.txt','r').readlines(): open('test.txt','a+').write(c)
以上是關於Python條件語句和循環語句的基礎知識介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!