python 循環結構


for循環
list或tuple可以表示一個有序集合。如果我們想依次訪問一個list中的每一個元素呢?比如 list:

L = ['Adam', 'Lisa', 'Bart']
print L[0]
print L[1]
print L[2]
如果list只包含幾個元素,這樣寫還行,如果list包含1萬個元素,我們就不可能寫1萬行print。

這時,循環就派上用場了。

Python的 for 循環就可以依次把list或tuple的每個元素迭代出來:

L = ['Adam', 'Lisa', 'Bart']
for name in L:
    print name
注意:  name 這個變量是在 for 循環中定義的,意思是,依次取出list中的每一個元素,並把元素賦值給 name,然后執行for循環體(就是縮進的代碼塊)。

這樣一來,遍歷一個list或tuple就非常容易了。

任務
班里考試后,老師要統計平均成績,已知4位同學的成績用list表示如下:

L = [75, 92, 59, 68]

請利用for循環計算出平均成績。

 

 

while循環
和 for 循環不同的另一種循環是 while 循環,while 循環不會迭代 list 或 tuple 的元素,而是根據表達式判斷循環是否結束。

比如要從 0 開始打印不大於 N 的整數:

N = 10
x = 0
while x < N:
    print x
    x = x + 1
while循環每次先判斷 x < N,如果為True,則執行循環體的代碼塊,否則,退出循環。

在循環體內,x = x + 1 會讓 x 不斷增加,最終因為 x < N 不成立而退出循環。

如果沒有這一個語句,while循環在判斷 x < N 時總是為True,就會無限循環下去,變成死循環,所以要特別留意while循環的退出條件。

任務
利用while循環計算100以內奇數的和。
sum = 0
x = 1
while x<=100:
    if x%2==1:
        sum+=x;
    x++;
print sum

 

 

break退出循環
用 for 循環或者 while 循環時,如果要在循環體內直接退出循環,可以使用 break 語句。

比如計算1至100的整數和,我們用while來實現:

sum = 0
x = 1
while True:
    sum = sum + x
    x = x + 1
    if x > 100:
        break
print sum
咋一看, while True 就是一個死循環,但是在循環體內,我們還判斷了 x > 100 條件成立時,用break語句退出循環,這樣也可以實現循環的結束。

任務
利用 while True 無限循環配合 break 語句,計算 1 + 2 + 4 + 8 + 16 + ... 的前20項的和。

sum=0
x=1
n=1
while True:
    sum+=x
    x*=2
    n+=1
    if n>20:
        break
print sum
continue繼續循環
在循環過程中,可以用break退出當前循環,還可以用continue跳過后續循環代碼,繼續下一次循環。

假設我們已經寫好了利用for循環計算平均分的代碼:

L = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in L:
    sum = sum + x
    n = n + 1
print sum / n
現在老師只想統計及格分數的平均分,就要把 x < 60 的分數剔除掉,這時,利用 continue,可以做到當 x < 60的時候,不繼續執行循環體的后續代碼,直接進入下一次循環:

for x in L:
    if x < 60:
        continue
    sum = sum + x
    n = n + 1

 

多重循環
在循環內部,還可以嵌套循環,我們來看一個例子:

for x in ['A', 'B', 'C']:
    for y in ['1', '2', '3']:
        print x + y
x 每循環一次,y 就會循環 3 次,這樣,我們可以打印出一個全排列:

A1
A2
A3
B1
B2
B3
C1
C2
C3



對100以內的兩位數,請使用一個兩重循環打印出所有十位數數字比個位數數字小的數,例如,23(2 < 3for x in [ 1,2,3,4,5,6,7,8,9 ]:
    for y in [0,1,2,3,4,5,6,7,8,9]:
        if y>x:
            print "%d%d\n" %(x,y)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM