【Python入門】7.循環(huán)for in與while、break、continue

本節(jié)摘要:循環(huán)for…in語句;循環(huán)while語句;break語句;continue語句


Daily Record:每天一紀(jì)念,記錄下python的學(xué)習(xí)歷程,入門學(xué)習(xí)筆記與心得。本學(xué)習(xí)筆記主要基于廖雪峰大大的Python教程。不積跬步,無以至千里~ .?(? ??_??)?


@[toc]


循環(huán)

for...in循環(huán)

for...in循環(huán)可以依次把list或tuple中的每個元素迭代出來,for x in ...循環(huán)就是把每個元素代入變量x,然后執(zhí)行縮進(jìn)塊的語句。

例如:

>>> l = ['a', 'b', 'c']
>>> for x in l:
...     print x

輸出結(jié)果會依次打印l的每一個元素:

a
b
c

在這里插入圖片描述

計算1-10的整數(shù)之和——可用sum()變量累加

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print sum
在這里插入圖片描述

計算1-100的整數(shù)之和——可用range()函數(shù)

range()函數(shù)

Python 2.7中,直接生成一個整數(shù)list序列。

>>> range(5)                     #生成一個從0開始到小于5的整數(shù)序列,Python 2.7的顯示
[0, 1, 2, 3, 4]
>>> range(0, 5)
[0, 1, 2, 3, 4]
>>> range(5, 10)
[5, 6, 7, 8, 9]

Python 3.x中,生成一個整數(shù)序列,需再用list()函數(shù)可以轉(zhuǎn)換為list。

>>> range(5)                     #Python 3.x的顯示
range(0,5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(5,10))            #生成一個從5開始到小于10的list
[5, 6, 7, 8, 9]

這樣可以通過for…in循環(huán)和range( )函數(shù)構(gòu)建一個簡單的求和算法。

sum = 0
>>> for x in range(101):         #range(101)生成0-100的整數(shù)序列
...     sum = sum + x
>>> print sum
sum = 0
>>> for x in range(101):         #range(101)生成0-100的整數(shù)序列
...     sum = sum + x
...
>>> print sum
5050

while循環(huán)

只要條件滿足,就不斷循環(huán),條件不滿足時退出循環(huán)。即在while后面加條件,如果條件判斷為True,則執(zhí)行冒號后的縮進(jìn)語句,之后再返回判斷條件,直到條件判斷為False時退出循環(huán)。

計算100以內(nèi)所有奇數(shù)之和:

sum = 0
>>> n = 99
>>> while n > 0:
...     sum = sum + n
...     n = n - 2
...
>>> print sum
2500

在循環(huán)內(nèi)部變量n不斷自減,直到變?yōu)?1時,不再滿足while條件,循環(huán)退出。

計算100以內(nèi)整數(shù)求和:

>>> sum = 0
>>> n = 1
>>> while n < 101:
...     sum = sum + n
...     n = n + 1
...
>>> print sum
5050
>>> sum = 0
>>> n = 100
>>> while n > 0:
...     sum = sum + n
...     n = n - 1
...
>>> print sum
5050

練習(xí)
請利用循環(huán)依次對list中的每個名字打印出Hello, xxx!:

L = ['Bart', 'Lisa', 'Adam']

  1. for...in循環(huán)
>>> L = ['Bart', 'Lisa', 'Adam']
>>> for name in L:
...     print 'Hello, %s!' %name
...
Hello, Bart!
Hello, Lisa!
Hello, Adam!
>>> L = ['Bart', 'Lisa', 'Adam']
>>> for name in L:
...     print 'Hello, ' +name+'!'
...
Hello, Bart!
Hello, Lisa!
Hello, Adam!
L = ['Bart', 'Lisa', 'Adam']
>>> for name in L:
...     print('Hello, {}!'.format(name))
...
Hello, Bart!
Hello, Lisa!
Hello, Adam!
  1. while循環(huán)
>>> L = ['Bart', 'Lisa', 'Adam']
>>> n = 0
>>> while n < 3:
...     print 'Hello, %s!' %L[n]
...     n = n + 1
...
Hello, Bart!
Hello, Lisa!
Hello, Adam!
>>> L = ['Bart', 'Lisa', 'Adam']
>>> n = 0
>>> while n < 3:
...     print 'Hello, ' +L[n]+'!'
...     n = n + 1
...
Hello, Bart!
Hello, Lisa!
Hello, Adam!

倒序打印:

>>> L = ['Bart', 'Lisa', 'Adam']
>>> n = len(L) - 1
>>> while n >= 0:
...     print 'Hello, ' +L[n]+ '!'
...     n = n - 1
...
Hello, Adam!
Hello, Lisa!
Hello, Bart!
>>> L = ['Bart', 'Lisa', 'Adam']
>>> n = len(L) - 1
>>> m = 0
>>> while n >= 0:
...     m = L[n]
...     n = n - 1
...     print 'Hello, %s!' % m
...
Hello, Adam!
Hello, Lisa!
Hello, Bart!

break

break語句,退出當(dāng)前循環(huán),提前結(jié)束循環(huán)。

例一:循環(huán)打印1~100的數(shù)字

n = 1
while n <= 100:
    print n
    n = n + 1
print 'End'

可以打印出1~100。

若要求只需打印1~20,提前結(jié)束循環(huán),可以用break語句:

# coding=utf-8
n = 1
while n <= 100:
    if n > 20:           # 當(dāng)n = 11時,條件滿足,執(zhí)行break語句
        break            # break語句會結(jié)束當(dāng)前循環(huán)
    print n
    n = n + 1
print 'END'

執(zhí)行上面的代碼,打印出1~20后,緊接著打印END,程序結(jié)束。

例二:之前的例子要計算100以內(nèi)整數(shù)求和

>>> sum = 0
>>> n = 1
>>> while n <= 100:
...     sum = sum + n
...     n = n + 1
...
>>> print sum
5050

現(xiàn)只要求計算30以內(nèi)整數(shù)求和

>>> sum = 0
>>> n = 1
>>> while n <= 100:
...     if n > 30:        # 當(dāng)n = 31時,條件滿足,執(zhí)行break語句
...         break         # break語句會結(jié)束當(dāng)前循環(huán)
...     sum = sum + n
...     n = n + 1
...
>>> print sum
465
>>> sum = 0
>>> n = 1
>>> while n <= 100:
...     sum = sum + n
...     n = n + 1
...     if n > 30:
...         break
...
>>> print sum
465

可見,break的作用是提前結(jié)束循環(huán)。


continue

在循環(huán)過程中,continue語句可以跳過本次循環(huán)進(jìn)入下次循環(huán)。

例一:打印出1~10

n = 0
while n < 10:
    n = n + 1
    print n

or

n = 0
while n <= 10:
    print n
    n = n + 1

如果只想打印1~10內(nèi)的奇數(shù),可以用continu語句跳過某些循環(huán):

n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0:         # 如果n是偶數(shù),執(zhí)行continue語句
        continue           # continue語句會直接繼續(xù)下一輪循環(huán),后續(xù)的print語句不會執(zhí)行
    print n 

執(zhí)行代碼,打印出1,3,5,7,9。

例二:計算0~10整數(shù)之和

>>> sum = 0
>>> n = 1
>>> while n <= 10:
...     sum = sum + n
...     n = n + 1
...
>>> print sum
55

現(xiàn)在只需要計算0到10的奇數(shù)之和。

>>> sum = 0
>>> n = 0
>>> while n < 10:
...     n = n + 1
...     if n % 2 == 0:
...         continue
...     sum = sum + n
...
>>> print sum
25

or


```python
>>> sum = 0
>>> n = 0
>>> while n < 11:
...     if n % 2 == 0:        # 如果n除以二取余數(shù)為0,即n為偶數(shù),則執(zhí)行continue跳過本次循環(huán)
...         n = n + 1
...         continue
...     sum = sum + n
...     n = n + 1
...
>>> print sum
25

錯誤?

>>> sum = 0
>>> n = 1
>>> while n <= 10:
...     sum = sum + n
...     n = n + 1
...     if n % 2 == 0:    # 要注意設(shè)置的條件對執(zhí)行continue語句是否合適
...         continue
...
>>> print sum
55

錯誤?

>>> sum = 0
>>> n = 0
>>> while n < 10:
...     n = n + 1
...     sum = sum + n
...     if n % 2 == 0:    # 要注意設(shè)置的條件對執(zhí)行continue語句是否合適
...         continue
...
>>> print sum
55

可見continue的作用是提前結(jié)束本輪循環(huán),并直接開始下一輪循環(huán)。


總結(jié)

循環(huán),可以有效地讓計算機(jī)做重復(fù)的任務(wù)。

break語句:在循環(huán)過程中直接退出循環(huán)
continue語句:提前結(jié)束本輪循環(huán),并直接開始下一輪循環(huán)。
這兩個語句通常都必須配合if語句使用。

==特別注意==
不能濫用breakcontinue語句。
breakcontinue會造成代碼執(zhí)行邏輯分叉過多,容易出錯。大多數(shù)循環(huán)并不需要用到breakcontinue語句,有些例子,可以通過改寫循環(huán)條件或者修改循環(huán)邏輯,去掉breakcontinue語句。

“死循環(huán)”:如果代碼寫得有問題,會讓程序陷入永遠(yuǎn)循環(huán)下去。此時可以用Ctrl+C退出程序或Ctrl+Z中斷程序,或者強(qiáng)制結(jié)束Python進(jìn)程。

試寫一個死循環(huán)程序。

最簡單的

n = 0
while n >= 0:
    n = n + 1
    print n
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容