2.關於python的if判斷,迴圈總結。

來源:互聯網
上載者:User

標籤: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判斷,迴圈總結。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.