標籤:python for while break continue 迴圈
一.if判斷。
if判斷的主要作用就是根據指定的條件運算式,做出不同的動作,操作不同的代碼。
if判斷大致可以分為三種,分別是單分支,雙分支,多分支。
1.單分支if語句。
python中的單分支if語句格式如下:
if 運算式:
執行的代碼
下面是例子:
num = 10
if num == 10: (當num變數中的值等於10,條件為真,執行下面的print “ok”代碼。)
print ‘ok‘
當num變數不等於10的時候,什麼都不會執行。
num = 1300000
if num == 10:
print ‘ok‘
簡單的總結下,就是說,單分支if語句就是,條件運算式為True時,執行下面的代碼,如果為False,則什麼都不執行。
2.雙分支if語句(if+else)。
雙分支if語句就是,判斷一個條件運算式,如果這個運算式為True執行一種代碼,如果運算式為False,執行else下的代碼。
格式如下:
if 條件運算式:
條件運算式為True時,執行的代碼。
else:
條件運算式為False時,執行的代碼。
例如:
num = 1300000
if num == 10: (當num等於10的時候,執行print “ok”,如果不等於10,執行print "error!")
print ‘ok‘
else:
print ‘error!‘
error!
3.多分支if 語句(if + elif+elif.......+else)。
多分支語句,首先會判斷一個條件運算式,如果運算式為True執行一種代碼,一旦不為真,則繼續判斷第二個條件運算式使用elif做開頭,第二個條件運算式是否為真,如果第二個條件運算式為真,則執行第二個條件運算式下面的代碼,如果第二個條件運算式也不為真,則繼續找下面的elif 去找第三個條件運算式.....以此類推,如果後面沒有其他運算式了,直接執行else下面的代碼(else可以不寫)。
格式如下:
if 條件運算式1:
條件運算式1為真時執行的代碼。
elif 條件運算式2: #(當條件運算式1不為真時,會檢查條件運算式2)
條件運算式2為真時執行的代碼。
elif 條件運算式3: #(同理,當上面的條件運算式2不為真時,會檢查條件運算式3)
條件運算式3為真時執行的代碼。
elif .......................
else:
當以上所有的條件運算式全都為False時,執行的代碼。
4.if語句的總結。
4.1 在if判斷的運算式中,可以使用 is , is not, not, and,or 等邏輯運算子。
4.2 當使用多重運算式的時候,可以使用()括弧來指定優先判斷的順序,當然,括弧還可以增加條件運算式的可讀性。
4.3一個if判斷最多隻有一個else但是可以有多個elif。
最後在補充一點關於條件運算式的知識點。
所有的標準對象,都可以用於布爾值的測試,同類型的對象都可以比對大小。
還有就是,以下對象的布爾值都等於False!!需要特別注意!
None,False,0,0.0+0.0j, “ ”(Null 字元串),[ ]空列表,()空元組,{}空字典。
以上的對象都為False。
5.三元運算式。
這個沒啥好解釋的,和if判斷特別像,舉個例子就明白了。
print "ok" if 10000 < 100 else "error"
error
print "ok" if 1 < 100 else "error"
ok
二.while迴圈。
while迴圈就是,以滿足某個條件為前提,重複的去做某事。
while迴圈包含了兩種迴圈模式,一種是死迴圈(無限迴圈),另外一種是條件計數迴圈。
這裡的條件,就是前面說的條件運算式。
在說這兩種while迴圈之前,先說下while迴圈的文法,下面是文法格式:
while 條件運算式:
條件為真時執行的代碼。
#(當條件為真時,下面的這段代碼會一直執行,直到條件為假,迴圈結束。)
1.while計數迴圈的樣本。
舉個簡單的例子,現在需要利用while迴圈列印出1~10的數字。
a = 1
while a < 11:
print a
a += 1
1
2
3
4
5
6
7
8
9
10
2.死迴圈,一直迴圈,直到海枯石爛。
while True:
print “ok”
#True是布爾值,代表真,條件為真,這個迴圈就會一直執行下去,直到break跳出或者程式終止。
死迴圈還可以這樣用。
tag=True
count=0
while tag:
if count == 9:
tag=False
print ‘the loop is %s‘ %(count)
count+=1
3.關於while迴圈的else部分!
python 中的while迴圈和其他程式設計語言的while迴圈有一些不同,這個不同之處就是python中的while可以和if一樣,支援else!
count=0
while (count < 9):
count+=1
if count == 3:
print ‘跳出本次迴圈,即這一次迴圈continue之後的代碼不再執行,進入下一次迴圈‘
continue
print‘the loop is %s‘ %(count)
else:
print ‘end‘
執行一遍上面的代碼,就可以看出,當while後面的條件運算式為假之後,else代碼塊中的代碼,
print ‘end‘ 就被執行了。
也就是說,迴圈不被break打斷,即正常結束,就會執行else後代碼塊。
如果迴圈被break打斷,else後面的代碼塊是不會執行的。
三.for迴圈。
for 迴圈和while 迴圈有著本質上的不同,for迴圈是一種迭代迴圈機制,而while迴圈是種條件迴圈。
如果要為一個集序列或者其他可迭代對象進行迭代,讓序列中的每一個元素都做一遍相同的操作,使用for迴圈最合適不過。
for 迴圈幾本文法如下:
for 迭代變數 in 迭代器或其他可迭代序列:
所要執行的代碼塊
假如有一個列表,現在需要迴圈一個列表中的內容,就可以使用for迴圈來做。
names = ["Leo","suhaozhi","ayumi"]
for i in names:
print "my name is %s" %(i)
my name is Leo
my name is suhaozhi
my name is ayumi
還可以使用索引進行迭代。
names = ["Leo","suhaozhi","ayumi"]
for i in range(len(names)):
print "my name is %s" %(names[i])
還可以使用enumerate函數顯示每個元素的索引,序號。
names = ["Leo","suhaozhi","ayumi"]
for i,n in enumerate(names,1):
print "index:%s name:%s" %(i,n)
index:1 name:Leo
index:2 name:suhaozhi
index:3 name:ayumi
上面簡單示範了,列表在for迴圈的迭代方法,元組和字串就沒必要說了,迭代的方法和列表一模一樣。
下面需要重點說說如何使用for迴圈去遍曆字典。
四.使用for迴圈遍曆字典。
直接把字典扔進for迴圈裡迴圈,只能拿到這個字典中所有的key,並不能連同value一起被遍曆,我們可以試試看。
d1 = {‘k1‘:‘v1‘,‘k2‘:‘v2‘,‘k3‘:‘v3‘}
for i in d1:
print i
k3
k2
k1
如果要是同時需要同時對一個字典的key和value進行遍曆可以試試字典中的items方法和iteritems方法。
d1 = {‘suhaozhi‘:‘13333333333‘,‘leo‘:‘15555555555‘,‘eric‘:‘11111111111‘}
for n,p in d1.items():
print "name:%s phone_number:%s" %(n,p)
name:suhaozhi phone_number:13333333333
name:eric phone_number:11111111111
name:leo phone_number:15555555555
然而。。。在資料量特別大的情況下,特別不推薦是喲哦那個items方法進行迭代,因為效率實在太低了!!!下面這種通過迭代器來迭代,代碼的執行效率會更高!!
d1 = {‘suhaozhi‘:‘13333333333‘,‘leo‘:‘15555555555‘,‘eric‘:‘11111111111‘}
for n,p in d1.iteritems():
print "name:%s phone_number:%s" %(n,p)
name:suhaozhi phone_number:13333333333
name:eric phone_number:11111111111
name:leo phone_number:15555555555
列表中的items和iteritems最大的區別就是,items方法返回的是個列表,字典中的每個索引值對作為這個列表中的一個元組,而iteritems返回的則是個迭代器,只要去遍曆,從迭代器中依次產生。
最後補充一下,在python中for迴圈也是和while迴圈一樣,支援else文法的,只要所有的內容迴圈結束,不被break打斷,else中的代碼塊就會被執行,這一點和while是一樣的。
五.關於break和continue。
1.break 用於徹底結束迴圈(僅限於本層),跳出程式中所有的迴圈,如果迴圈下面還有其他代碼,其他的代碼會正常執行,不會影響到迴圈外的代碼。
記得剛開始接觸python編程的時候,犯了個特別低級的錯誤,就是總把exit()當break用....現在才明白,exit和break的區別,一種是徹底退出python程式,另外一種則是跳出本層迴圈!!只是本層!!
現在要去迴圈一個列表,列表當中有5個數字,迴圈到3時,就不在向下遍曆,輸出一個end字元。
l1 = [1,2,3,4,5]
l1 = [1,2,3,4,5]
for n in l1:
print n
if n == 3:
break
print "end"
輸出結果如下:
1
2
3
end
輸出到3之後,break跳出本層迴圈,然後輸出了end。
2.continue 跳出本次迴圈,跳到下一輪迴圈的開始處。(這個countinue在使用while迴圈的時候用的特別多。)
有一個列表現在需要迴圈,列表當中有5個數字,for迴圈遍曆到每個數位時候輸出到螢幕一次,到數字3的時候跳過,這種情況就可以使用continue來實現。
l1 = [1,2,3,4,5]
for n in l1:
if n == 3:
continue
else:
print n
輸出結果如下:
1
2
4
5
六.列表推導式,輕量級迴圈。
個人理解python中的輕量推導式就是用來產生列表的輕量級for迴圈。
如果只想列印出那些在10以內能被3整除的平方數,只需要通過添加一個if部分在推導式中就可以完成:
print [n * n for n in range(10) if n % 3 == 0]
[0, 9, 36, 81]
本文出自 “reBiRTH” 部落格,請務必保留此出處http://suhaozhi.blog.51cto.com/7272298/1906393
2.關於python的if判斷,迴圈總結。