狠狠撸

狠狠撸Share a Scribd company logo
Python 迴圈作業
Revised on March 14, 2020
? 關係運算子與邏輯運算子
? for迴圈
? 使用range函式
? 使用break與continue命令
? for…else迴圈
? while迴圈
? while…else迴圈
? 巢狀迴圏
? 循序 (sequence)
依先後順序,?個步驟接著?個步驟依序執?
? 分支選擇 (branch)
依據不同的條件值,選擇不同的解題步驟執?
? 反覆 (iteration)
部分解題步驟需要反覆執?,直到符合或是不符合某?條件式時,才
會離開重複執?的部份;也常被稱為「迴圈 (Loop)」
? 分支與反覆作業通常需要搭配關係運算子與邏輯運算子來建立條件式
基本程式邏輯
2
運算子 說明 實例 運算結果
== 左側運算元與右側運算元是否相等
4 + 2 == 1 + 5 True
15 == 3 False
!= 左側運算元與右側運算元是否不相等
2 * 3 != 3 * 2 False
7 != 9 True
> 左側運算元是否大於右側運算元
12 > 10 True
6 * 2 > 3 * 4 False
< 左側運算元是否小於右側運算元
8 < 9 True
3 < 9 – 6 False
>= 左側運算元是否大於或等於右側運算元
12 >= 10 True
6 * 2 >= 3 * 4 True
<= 左側運算元是否小於或等於右側運算元
8 <= 9 True
3 <= 9 - 6 True
關係運算子
3
? and (且)邏輯運算子
? 溫度(temper)高於30而且不超過的條件式寫法
(temper > 30) and (temper <= 38)
? or (或)邏輯運算子
? 分數(score)必須介於0~100,則無效分數的條件式寫法
(score < 0) or (score > 100)
? not (相反)邏輯運算子
? not運算子是單?的條件式運算,主要是把條件式的結果造成相反結果,
即True ? False,False ? True
邏輯運算子
4
? for迴圈通常配合串列來運作,迴圈執?時會依序取出串列元素,指
定給迴圈變數,?直到串列內無元素為?
? 語法
for 廻圈變數 in 串列:
廻圈區塊
? for迴圈敘述要以「:」冒號為結尾
? 迴圈區塊要往後縮排4個空白字元
? 如果迴圈區塊只有??程式碼時,迴圈區塊可以接續在冒號後?
for迴圈
True
還有元素未處理? 迴圏區塊
False
迴圏變數=串列
第1個元素
迴圏變數=串列
下1個元素
? 用來產生整數串列,語法:
? range(終值)
產生從0到「終值-1」的串列
? range(起始值, 終值 [,間隔值])
? 起始值:整數串列的起始值,如果省略初值時,則預設從0開始
? 終值:整數串列的終?值 (串列不含終?值)
? 間隔值:整數串列元素的間隔值,該值可以為正值、負值或者省略
? 預設間隔值為1
? 間隔值是正值時,產生從起始值開始,每次遞增間隔值,到「終?值-1」為
?的串列
? 間隔值為負值時,此時起始值必須大於終?值,產生的串列為由起始值開始,
每次遞減間隔值, 到「終?值+1」
range函式 1/2
range(5) #[0, 1, 2, 3, 4]
range(1, 10) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
range(1, 10, 2) #[1, 3, 5, 7, 9]
range(10, 1, -2) #[10, 8, 6, 4, 2]
range函式 2/2
7
? 費氏數列(Fibonacci number)頭兩個數為0與1,之後值為其前兩個
數總和
? 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610
? 設計程式,計算任?項的費氏數列值
Lab 費氏級數
8
? ㄧ個數如果恰巧等於他的因數之和,稱為完美數(Perfect number)
? 6 = 1 + 2 + 3
? 28 = 1 + 2 + 4 + 7 + 14
? 設計程式,列出介於指定區間的完美數
Lab 尋找完美數
9
? 在數論中,水仙花數(Narcissistic number)也稱為自戀數、自冪數,
用來描述?個N位正整數,該整數值等於其各位數字的N次方和
? 153是?個「水仙花數」,因為153 1 5 3
? 1634是?個「水仙花數」,因為1634 1 6 3 4
? 設計程式,列出4位數(1000~9999)的自戀數
Lab 尋找自戀數
10
? 迴圈執?時,break命令可強制脫離迴圈
? 須搭配條件敘述
? break命令也適用while迴圈
break命令
11
1
2
3
4
5
6
7
for var in range(start, end):
statement
if(boolean-expression):
break
statement
...
statement
強制脫離for迴圈
? 迴圈執?時,continue命令可略過本次循環,回到迴圈起始處執?下
?循環
? 須搭配條件敘述
? continue命令也適用while迴圈
continue命令
12
1
2
3
4
5
6
7
for var in range(start, end):
statement
if(boolean-expression):
continue
statement
...
statement
繼續處理下一個元素資料
? 語法
for 迴圈變數 in 串列:
迴圈區塊
else:
else程式區塊
? 當for迴圈正常結束後,程式流程會執?else程式區塊?次
for…else
True
還有元素未處理? 迴圏區塊
False
迴圏變數=串列
第1個元素
迴圏變數=串列
下1個元素
else程式區塊
? 質數(Prime number),又稱素數,指在大於1的自然數中,除了1和
該數自身外,無法被其他自然數整除的數(也可定義為只有1與該數本
身兩個正因數的數)
? 設計程式,列出所有小於指定數的質數
Lab 尋找質數
? 語法
while (條件式):
迴圈區塊
? while迴圈在迴圈開始前,會先檢查條件式是否成立,如果不成立,
程式流程會略過迴圈區塊,向下繼續執?。反之,程式流程會在迴圈
內循環,直到條件式的結果不成立,才會脫離迴圈
? 通常用於沒有固定次數的情況
while迴圈 1/2
True
迴圏條件? 迴圏區塊
False
while迴圈 2/2
? 語法
while (條件式):
迴圈區塊
else:
else程式區塊
? while迴圈正常執?結束(非break中?迴圏)後,才會執?else程式區塊
while…else
? 若迴圈內還有迴圈,?層?層由內而外即構成「巢狀迴圈」(Nested
loop),也可以稱為「多重迴圈」。無論是for或while迴圈,或是同
時使用都可以構成巢狀迴圈
? 撰寫巢狀迴圈程式時,要特別注意縮排程式才能正確執?
巢狀迴圈 1/2
巢狀迴圈 2/2
? 下列程式碼執?後,輸出結果為何?
sum = 0
for x in range(10):
sum += x
print(x, sum, sep=',')
A. 9,45
B. 10,45
C. 10,55
D. 11,55
自我評量 1/4
? 下列迴圏區塊,執?的次數為何?
for x in range(1, 10):
print (x)
A. 無限次
B. 0次
C. 9次
D. 10次
自我評量 2/4
? 下列程式,最後?次輸出的結果為何?
x = - 10
while (x):
print (x)
x += 1
A. -1
B. 0
C. 1
D. 語法錯誤,無法執?
自我評量 3/4
? 下列程式,那最後?次輸出的結果為何?
x ╒ - 10
while (x):
print (x)
x += 1
A. -1
B. 0
C. 1
D. 語法錯誤,無法執?
自我評量 4/4
? 有?隻蝸?爬20公尺的旗桿,白天可向上爬3.5公尺,晚上會下滑1.2
公尺。寫?程式顯?蝸?爬到桿頂的過程
實作練習 1/2
24
? 參考程式
實作練習 2/2
25

More Related Content

Python程式設計 - 迴圈作業