2.5 分支與循環二
1. 問題——分數等級問題
按照100分制,90分以上成績爲A,80-90分成績爲B,70-80分之間爲C,60-70分之間爲D,60分一下爲E,當輸入用戶的分數,判斷ABCDE打印輸出
1.1 方法一使用if
cpu代碼效率執行低
score = int(input("請輸入用戶的一個分數:"))
if 90<= score <= 100:
print("A")
if 80<= score < 90:
print("B")
if 70<= score < 80:
print("C")
if 60<= score < 70:
print("D")
if 0<= score < 60:
print("E")
if score <0 or score > 100:
print("輸入錯誤!")
第一種判斷完第一個之後,還需要執行後續的判斷,浪費cpu的時間
1.2 方法二 if … else
score = int(input("請輸入用戶的一個分數:"))
if 90<= score <= 100:
print("A")
else:
if 80<= score < 90:
print("B")
else:
if 70<= score < 80:
print("C")
else:
if 60<= score < 70:
print("D")
else:
if 0<= score < 60:
print("E")
else:
print("輸入錯誤!")
1.3 方法三 if elif
score = int(input("請輸入用戶的一個分數:"))
if 90<= score <= 100:
print("A")
elif 80<= score < 90:
print("B")
elif 70<= score < 80:
print("C")
elif 60<= score < 70:
print("D")
elif 0<= score < 60:
print("E")
else:
print("輸入錯誤!")
判斷完第一個條件時,如果成立,則直接退出
針對第三個程序,根據一般的統計規律,70-80的分數一般比較集中,因此根據統計規律,
可以將70-80的範圍內的條件放在最前面,以達到cpu高效的利用。
2.python可以有效的避免懸掛else,
#懸掛else
if()
if()
printf();
else
printf();
C語言的的語法會有懸掛的錯誤,在python中不會存在,因爲python是通過縮進來控邏輯塊的
3.條件表達式(三元操作符)
三元操作符可以將一個條件判斷語句改爲一條語句
格式爲:變量名 = 等式一 (if 條件) else 等式二
x,y = 4, 5
if x<y:
small = x
else:
small = y
上面的例子可以改爲:
small = x if x<y else y
4. assert 斷言語句
當這個關鍵詞後的條件爲假的時候,程序自動崩潰並拋出AssertionError的異常
assert 3>4 #會提示AssertiongError
一般來說,我們可以用Ta在程序中置入檢查點,當需要確保程序中的某一個條件一定爲真才能讓程序正常工作時,assert關鍵測就非常有用了
例如,當一個程序接口只希望輸入爲數字,但輸入其他無效時,即可以使用斷言assert語句
一般用於測試程序
#################################################################################################
5. 練習題:
5.1 if not(test < 100):相當於
#if test >= 100:
5.2 假設有x =1, y = 2, z = 3, 情快速交換三個變量的值:
x = 1
y = 2
z = 3
print(x,y,z)
x,y,z = z,x,y
print(x,y,z)
運行結果:
5.3 以下表達式實現什麼功能
(x<y and [x] or [y])[0] 實現了什麼功能?
#這是三元操作符,涉及到切片和列表的知識
#靈活使用and 和 or 搭配使用三元操作符
5.4 成員資格運算符:in
#python 有一個成員資格運算符:in
#用於檢查是否在列表裏,如果在序列中,則返回True,否則返回False
#經常用於for in中
name = 'weivid'
print('we' in name) #True
print('wvi' in name) #Flase
print('h' in name) #False
運行結果: