Python 程式設計語言 筆記(四)
# program: maxn.py
# 尋找一組數中的最大值
def main():
n = eval(input("How many numbers are there?"))
# 將第一個值賦值給max
max = eval(input("Enter a number >>"))
# 連續與後面n-1值進行比較
for i in range(n-1):
x = eval(input("Enter a number >>"))
if x > max:
max = x
print("The largest value is", max)
main()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
【執行結果】 How many numbers are there? 5 Enter a number >> 9 Enter a number >> 6 Enter a number >> 3 Enter a number >> 10 Enter a number >> 20 The largest value is 20
④ 使用Python內建函式max()
3.5 基本迴圈結構
(1)for迴圈
Python可以使用for語句迴圈遍歷整個序列的值,格式如下:
for <var> in <sequence>:
<body>
- 1
- 2
在for迴圈中,迴圈變數var遍歷了佇列中的每一個值,迴圈變數var遍歷了佇列中的每一個值,迴圈語句體為每個值執行一次
例:for迴圈求平均數
- IPO:
輸入:待輸入數字個數,數字
處理:平均數演算法
輸出:平均數
通用設計方案:
- ① 輸入數字的個數n
- ② 將sum初始化為0
- ③ 迴圈n次:
- 輸入數字x
- 將x加入sum中
- ④ 將sum/n作為平均數輸出出來
- 程式10:
#average1.py
n = eval(input("How many numbers?"))
sum = 0.0
for i in range(n):
x = eval(input("Enter a number >>"))
sum = sum + x
print("\nThe average is", sum/n)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
【執行結果】 How many numbers? 3 Enter a number >> 5 Enter a number >> 7 Enter a number >> 6
The average is 6.0
for迴圈的缺點:
程式開始時必須提供輸入數字總數,以提供固定迴圈次數 大規模數字則需要使用者數清楚個數 為此,Python提供了另一種迴圈模式即無限迴圈,不需要提前知道迴圈次數
(2)while迴圈
語句格式:
while <condition>
<body>
- 1
- 2
條件總是在迴圈體執行之前被判斷,這種結構又被稱為前測迴圈(當型迴圈) 如果迴圈體沒有對i初始化或迴圈體沒有累加,條件判斷一直為真,迴圈體將一直執行,即為死迴圈程式,這時通常使用Ctrl+C來終止一個程式
(3)break語句 —— 退出迴圈
例:程式11:
#TestBreak.py
sum = 0
number = 0
while number < 20:
number += 1
sum += number
if sum > 100:
break
print("The number is", number)
print("The sum is", sum)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
【執行結果】 The number is 14 The sum is 105
(4)continue — 結束本次迴圈
即跳出迴圈體中下面尚未執行的語句,對於while迴圈,繼續求解迴圈條件;對於for迴圈,繼續遍歷迴圈列表
continue語句和break語句的區別:
continue語句只結束本次迴圈,而不終止整個迴圈的執行,而break語句則是直接結束整個迴圈流程,不再判斷迴圈條件是否成立
(5)迴圈語句中的else — 不滿足迴圈條件時執行
3.6 通用迴圈構造方法
(1)互動式迴圈
互動式迴圈是無限迴圈的一種,允許使用者通過互動的方式重複程式特定部分
(2)哨兵迴圈
執行迴圈直到遇到特定的值,迴圈語句才終止執行
設計方法:
① 設定一個哨兵值作為迴圈終止的標誌
② 任何值都可以做哨兵,但要與實際資料有所區別
(3)檔案迴圈
面向檔案的方法是資料處理的典型應用,可以事先將資料錄入到檔案,便於編輯修改,python中採用readline()方法中的end of file迴圈模式
(4)迴圈巢狀
決策和迴圈互相巢狀可以實現複雜演算法,假設數字以逗號分隔出現在檔案的同一行上
(3)(4)整合程式如圖:
3.7 死迴圈和迴圈巢狀
(1)死迴圈 — 無法靠自身的控制中止的迴圈
死迴圈的使用:通過死迴圈可以一直檢測捕捉特定異常
(2)後測迴圈(直到型迴圈)
先接受輸入,再判斷迴圈條件是否滿足。在Python中沒有後測迴圈語句,但可以通過while和break語句間接實現,如:
(3)半路迴圈 — 迴圈判斷條件在迴圈體的中部
例:
3.8 布林表示式
條件語句和迴圈語句都使用布林表示式作為條件 布林值為真(True)或假(Flase)
(1)布林操作符:and,or,not
and和or用於組合兩個布林表示式,併產生一個布林結果
<expr> and <expr>
<expr> or <expr>
- 1
- 2
not運算子計算一個布林表示式的反值
not <expr>
- 1
(2)布林操作符的優先順序:not > and > or
例:壁球比賽計分:
- 假設scoreA和scoreB代表兩個壁球選手的分數
- 規則1:只要一個選手達到了15分,本場比賽就結束
- 即: scoreA == 15 or scoreB == 15
- 在程式中構造一種迴圈條件,對遊戲結束條件取反,只要比賽還沒有結束遊戲就一直進行下去
- 即: while not( scoreA == 15 or scoreB == 15 ) # 比賽繼續
- 規則2:如果一方打了七分而另一方一分未得時,比賽也結束
- 即:scoreA == 15 or scoreB == 15 or (a == 7 and b == 0) or (b == 7 and a == 0)
- 需要一個團隊贏得至少兩分才算贏,即其中一個隊已經達到了15分,且分數差異至少為2時比賽結束(排球)
- 即:(a >= 15 or b >= 15) and abs(a-b)>=2
- 規則1:只要一個選手達到了15分,本場比賽就結束
(3)布林代數: 布林表示式遵循特定的代數定律,這些規律被稱為布林邏輯或布林代數
代數 | 布林代數 |
---|---|
a*0 = 0 | a and false == false |
a*1 = a | a and true == a |
a+0 = 0 | a or false == a |
① 任何資料和true進行or操作都是真
② and和or操作符都符合分配率
③ not操作符可負負抵消
④ 德摩根定律:not放進表示式後,and和or發生變化
如:not(a or b) == (not a) and (not b) not(a and b) == (not a) or (not b)