前面講述了"**專題一.函數的基礎知識**",而這篇文章講述的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即真)、關系表達式(>= <= == !=)和邏輯運算表達式(and or not).
2.雙分支語句
它的基本格式是:
if condition:
statement
statement
else:
statement
statement
3.多分支語句
if多分支由if-elif-else組成,其中elif相當于elseif,同時它可以使用多個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<10;i++)中i循環計數,Python的for指每次從序列sequences里面的數據項取值放到target里,取完即結束,取多少次循環多少次.其中in為成員資格運算符,檢查一個值是否在序列中.同樣可以使用break和continue跳出循環.
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
out 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)
PS:我主要是通過《Python基礎教程》和"51CTO學院 智普教育的python視頻"學習.所以文中引用了很多視頻中的知識、書籍知識和自己的知識,感謝那些作者和老師,希望文章對大家有所幫助,才開始學習python知識,如果文章中有錯誤或不足之處,還請海涵,也希望大家提出意見與君共勉.勿噴~
(By:Eastmount 2014-9-22 夜7點?原創CSDN?[http://blog.csdn.net/eastmount/](http://blog.csdn.net/eastmount/)**)
- 前言
- [Python學習] 專題一.函數的基礎知識
- [Python學習] 專題二.條件語句和循環語句的基礎知識
- [Python學習] 專題三.字符串的基礎知識
- [Python學習] 簡單網絡爬蟲抓取博客文章及思想介紹
- [Python學習] 專題四.文件基礎知識
- [python學習] 簡單爬取維基百科程序語言消息盒
- [python學習] 簡單爬取圖片網站圖庫中圖片
- [python知識] 爬蟲知識之BeautifulSoup庫安裝及簡單介紹
- [python+nltk] 自然語言處理簡單介紹和NLTK壞境配置及入門知識(一)
- [python學習] 模仿瀏覽器下載CSDN源文并實現PDF格式備份
- [Python學習] 簡單爬取CSDN下載資源信息
- [Python] 專題五.列表基礎知識 二維list排序、獲取下標和處理txt文本實例
- [Python學習] 專題六.局部變量、全局變量global、導入模塊變量
- [python] 專題七.網絡編程之套接字Socket、TCP和UDP通信實例
- [python] 專題八.多線程編程之thread和threading