2016年5月31日 星期二

Python_Note04

Control Flow Tools

  • if是最單純的一種條件分支敘述句
  • if 後面接 condition,最後需要加上冒號:
  • 冒號:之後的下一行程式碼記得要縮排
  • 當條件(condition)成立時(True), 執行冒號後面的suite程式碼, 若條件不成立 (False), 略過整個suite開始執行 suite之後一行程 式碼
  • 用 condition來選擇suite程式碼做或不做
  • if語句可以有多個條件(condition),可以用and、or、及 ( ) 來串接。Ex : if Condition_A and Condition_B : [即為條件A與B必須同時成立]



if-elif-else

>>> x = int(input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
...     x = 0
...     print('Negative changed to zero')
... elif x == 0:
...     print('Zero')
... elif x == 1:
...     print('Single')
... else:
...     print('More')


for Statement

for迴圈是另外一個可以重複進行運算的結構

Iterable object:是指可迭代物件, 可以想像成這種物件裡面有可數的項目可依特定順序一個一個取出
Var:稱控制變數又或迴圈變數



for迴圈的執行流程

  1. 自可迭代物件中取出一個項目, 代入至Var中 (迭代物件 ex: 從list = [1,3,5,10,14],依序取)
  2. 執行suite
  3. 回到第一步直到可迭代物件中的項目盡皆取出

這種依次取出(探訪)並且進行代入的動作稱為迭代,當然, break 和 continue 也可以在 for 迴圈中出現。


range() Function

for迴圈中需要用來做迭代的物件可以使用內建函數range(),

range(start,end,step),預設start為0,step為1
使用時須改成要用的型態
ex: >>> range(10)
range(0,10)
ex: >>> list (range(0,10,2))
[0,2,4,6,8,10]

while Statement

  • 當expression條件成立(True)時, 進行區塊(suite)運算
  • 區塊執行完畢後, 再次檢查條件, 若依然成立則執行suite否則開始執行區塊之後的敘述
  • 這種重複的結構我們稱為迴圈
  • 不再繼續執行區塊的動作稱為跳出迴圈或離開迴圈






else Statement

重複結構while和for都支援額外的else敘述



當while迴圈或for迴圈不是因為break, return或例外終止時(指迴圈正常中止), else_suite會被執行

for / while 的使用時機
  • 當需要重複進行運算的時候使用迴圈(for/while)
  • 當重複的次數可以清楚被計算或當迭代的表現明顯時使用 for迴圈
  • 當重複的次數難以計算(但條件清楚)或是有條件的重複時使用 while

break and continue Statements

對於迴圈想要擁有更高的控制性

  • 利用break在任何時候跳出迴圈
  • 利用continue在任何時候略過迴圈(略過本次迴圈剩餘的運算) , 而這些時機點通常搭配選擇結構來進行




巢狀結構
  • 不論是if/elif/else結構,while迴圈或for迴圈都支援巢狀(層疊式)的撰寫, 各層之間的縮排務必清楚, 冒號也要記得加上
  • 雙重迴圈(多重迴圈)是程式中重要的結構, 是處理多層(多軌)迭代或是運算的必要手段
  • 多重迴圈的運行次序可回到基本定義上想


範例:
'''
分別用for,while迴圈各寫1個n x n的乘法表
程式可以讀取使用者輸入的值 n, n>1
'''
num = int(input('input a number : '))

for i in range(1,num+1,1):
    for j in range(1,num+1,1):
        print('%d * %d = %d' %(i,j,i*j))

i = 1
j = 1
while i <= num:
    while j <=num:
        print('%d * %d = %d' % (i, j, i * j))
        j += 1
    i += 1

    j = 1




沒有留言:

張貼留言