Python3.3

循環

Python的循環有兩種,一種是for…in循環,依次把list或tuple中的每個元素迭代出來,比如:

names=['Marry','Bob','Tom']
for name in names:    #注意冒號:
print (name)

執行這段代碼,會依次打印names的每一個元素。
結果:

Marry
Bob
Tom

所以for x in …循環就是把每個元素代入變量x,然後執行縮進塊的語句。
如果要計算1-100的整數之和,Python提供一個range()函數,可以生成一個整數序列,再通過list()函數可以轉換爲list。比如range(5)生成的序列是從0開始小於5的整數:

>>> list(range(5))
[0, 1, 2, 3, 4]

range(101)就可以生成0-100的整數序列,計算1-100的整數之和如下:

sum=0
for x in range(101):   #注意冒號:
    sum=sum+x
print(sum)

結果:

5050

第二種循環是while循環,只要條件滿足,就不斷循環,條件不滿足時退出循環。比如我們要計算100以內所有奇數之和,可以用while循環實現:

sum=0
n=99
while n>0:   #注意冒號:
    sum=sum+n
     n=n-2
print(sum)

運行錯誤:

File "hello.py", line 5
n=n-2 
TabError: inconsistent use of tabs and spaces in indentation

說明用了tab鍵作縮進了,因爲在python不像C/C++裏用大括號來區分程序塊,而是用縮進, 所以縮進很重要你把Tab都換成空格就好了(可以把代碼放到Notepad++上,然後 勾選 視圖->顯示符號->顯示空格與製表符,如果代碼中顯示的由最左邊的箭頭形式的話,說明有tab鍵。替換方式:在NotePad++中,點擊 編輯->空白字符操作->TAB轉空格,即可完成全部的轉化。

結果:

2500

在循環內部變量n不斷自減,直到變爲-1時,不再滿足while條件,循環退出。

練習

請利用循環依次對list中的每個名字打印出Hello, xxx!:

# -*- coding: utf-8 -*-
----
L = ['Bart', 'Lisa', 'Adam']
for name in L:
print('Hello,',name,'!')

break(跳出整個循環)

在循環中,break語句可以提前退出循環。

n = 1
while n <= 100:
    if n > 10:   # 當n = 11時,條件滿足,執行break語句
        break    # break語句會結束當前while循環
    print(n)
    n = n + 1
print('END')

執行上面的代碼可以看到,打印出1~10後,緊接着打印END,程序結束。

Continue(跳出本次循環,直接進行下次循環)

在循環過程中,也可以通過continue語句,跳過當前的這次循環,直接開始下一次循環。

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

結果:

1
3
5
7
9

小結

循環是讓計算機做重複任務的有效的方法。
break語句可以在循環過程中直接退出循環,而continue語句可以提前結束本輪循環,並直接開始下一輪循環。這兩個語句通常都必須配合if語句使用。
特別注意,不要濫用break和continue語句。break和continue會造成代碼執行邏輯分叉過多,容易出錯。大多數循環並不需要用到break和continue語句,上面的兩個例子,都可以通過改寫循環條件或者修改循環邏輯,去掉break和continue語句。
有些時候,如果代碼寫得有問題,會讓程序陷入“死循環”,也就是永遠循環下去。這時可以用Ctrl+C退出程序,或者強制結束Python進程。

編寫一個死循環:

n=1
while n>0:
    n=n+1 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章