標籤:運算式 utf-8 == mic michael 重複 ... while 問題
迴圈要計算1+2+3,我們可以直接寫運算式: >>> 1 + 2 + 36要計算1+2+3+...+10,勉強也能寫出來。 但是,要計算1+2+3+...+10000,直接寫運算式就不可能了。 為了讓電腦能計算成千上萬次的重複運算,我們就需要迴圈語句。 Python的迴圈有兩種,一種是for...in迴圈,依次把list或tuple中的每個元素迭代出來,看例子: names = [‘Michael‘, ‘Bob‘, ‘Tracy‘]for name in names: print(name)執行這段代碼,會依次列印names的每一個元素: MichaelBobTracy所以for x in ...迴圈就是把每個元素代入變數x,然後執行縮排塊的語句。 再比如我們想計算1-10的整數之和,可以用一個sum變數做累加: sum = 0for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + xprint(sum)如果要計算1-100的整數之和,從1寫到100有點困難,幸好Python提供一個range()函數,可以產生一個整數序列,再通過list()函數可以轉換為list。比如range(5)產生的序列是從0開始小於5的整數: >>> list(range(5))[0, 1, 2, 3, 4]range(101)就可以產生0-100的整數序列,計算如下: sum = 0for x in range(101): sum = sum + xprint(sum)請自行運行上述代碼,看看結果是不是當年高斯同學心算出的5050。 第二種迴圈是while迴圈,只要條件滿足,就不斷迴圈,條件不滿足時退出迴圈。比如我們要計算100以內所有奇數之和,可以用while迴圈實現: sum = 0n = 99while n > 0: sum = sum + n n = n - 2print(sum)在迴圈內部變數n不斷自減,直到變為-1時,不再滿足while條件,迴圈退出。 練習請利用迴圈依次對list中的每個名字列印出Hello, xxx!: # -*- coding: utf-8 -*-L = [‘Bart‘, ‘Lisa‘, ‘Adam‘] Runbreak在迴圈中,break語句可以提前退出迴圈。例如,本來要迴圈列印1~100的數字: n = 1while n<= 100: print(n) n = n + 1print(‘END‘)上面的代碼可以列印出1~100。 如果要提前結束迴圈,可以用break語句: n = 1while n <= 100: if n > 10: # 當n = 11時,條件滿足,執行break語句 break # break語句會結束當前迴圈 print(n) n = n + 1print(‘END‘)執行上面的代碼可以看到,列印出1~10後,緊接著列印END,程式結束。 可見break的作用是提前結束迴圈。 continue在迴圈過程中,也可以通過continue語句,跳過當前的這次迴圈,直接開始下一次迴圈。 n = 0while n< 10: n = n + 1 print(n)上面的程式可以列印出1~10。但是,如果我們想只列印奇數,可以用continue語句跳過某些迴圈: n = 0while n < 10: n = n + 1 if n % 2 == 0: # 如果n是偶數,執行continue語句 continue # continue語句會直接繼續下一輪迴圈,後續的print()語句不會執行 print(n)執行上面的代碼可以看到,列印的不再是1~10,而是1,3,5,7,9。 可見continue的作用是提前結束本輪迴圈,並直接開始下一輪迴圈。 小結迴圈是讓電腦做重複任務的有效方法。 break語句可以在迴圈過程中直接退出迴圈,而continue語句可以提前結束本輪迴圈,並直接開始下一輪迴圈。這兩個語句通常都必須配合if語句使用。 要特別注意,不要濫用break和continue語句。break和continue會造成代碼執行邏輯分叉過多,容易出錯。大多數迴圈並不需要用到break和continue語句,上面的兩個例子,都可以通過改寫迴圈條件或者修改迴圈邏輯,去掉break和continue語句。 有些時候,如果代碼寫得有問題,會讓程式陷入“死迴圈”,也就是永遠迴圈下去。這時可以用Ctrl+C退出程式,或者強制結束Python進程。 請試寫一個死迴圈程式。
Python 基礎之迴圈