零基礎入門學習Python(8)--了不起的分支和迴圈2
前言
上節課小甲魚教大家如何正確的打飛機,其要點是判斷和迴圈,判斷
就是該不該做某事,迴圈
就是持續做某事
知識點
寫一個程式
按照100分制,90分以上成績為A,80到90為B,60到80為C,60以下為D,寫一個程式,當用戶輸入分數,自動轉換為ABCD的形式列印。
temp = input('請輸入成績:')
a = int(float(temp))
if 90< a <= 100:
print('A')
else:
if 80< a <=90:
print('B')
else:
if 60 < a <=80:
print ('C')
else:
if 0<= a <=60:
print('D')
else:
print('輸入錯誤')
利用elif
對上述程式碼進行改進. elif
相當於C語言中的else if
temp = input('請輸入成績:')
a = int(float(temp))
if 90< a <= 100:
print('A')
elif 80< a <=90:
print('B')
elif 60 < a <=80 :
print('C')
elif 0<= a <=60:
print('D')
else:
print('輸入錯誤')
Python 可以有效避免“懸掛else”
什麼叫懸掛else
舉個例子,初學C語言的朋友可能很容易被一下程式碼欺騙:
if ( hi > 2 )
if ( hi > 7 )
printf( "好棒!好棒!" );
else
printf( "切~" );
在這個例子中,else
是想和外層的if
相匹配,但事實上按照C語言就近原則,else
是與第二個if
相匹配。由於初學者的一個不小心,就導致一個bug的出現。這就是著名的懸掛else
而在Python中,Python的縮排
使用了強制的規定,使得程式碼必須正確的對齊,否則程式無法執行。所以Python是讓程式設計師來決定else是屬於哪一個if,通過限制你的選擇,從而減少了不確定性。
條件表示式(三元操作符)
例子:
x, y = 4, 5
if x < y:
small = x
else:
small = y
我們說多少元操作符的意思是指這個操作符有多少個運算元。
例如說 賦值操作,small = x
,它有兩個運算元,分別是左邊的small
和右邊的x
,我們就叫它二元操作符
或者說是二目操作符
當我們的減號-
當作負號-
來使用時,就代表一元操作符.
三元操作符,也就是說也有三個運算元
利用三元操作符進行改進:
small = x if x < y else y
語法: x if 條件 else y
當 if條件問True時,把x值給small。當if條件為False時,把y值給small
斷言(assert)
assert關鍵字我們稱之為“斷言”,當這個關鍵字後邊的條件為假時,程式自動崩潰並丟擲AssertionError的異常。
舉個例子:
>>> assert 3 > 4
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
assert 3 > 4
AssertionError
>>> assert 4 > 3
>>>
那在什麼情況下我們需要使用到assert呢?
當我們在測試程式時候,因為與其讓錯誤的條件導致程式後面出現莫名其妙的bug或者崩潰的話,不如在錯誤條件出現的那一瞬間我們實現自爆。這就是我們assert存在的理由。
一般來說 我們可以用它在程式中置入檢查點,當需要確保程式中的某個條件一定為真才能讓程式正常工作的話,assert關鍵字就非常有用了。
課後習題
請將以下程式碼 以三元操作符形式進行修改:
x,y,z = 6,5,4
if x < y:
small = x
if z < small:
small = z
elif y < z:
small = y
else:
small = z
small = x if (x < y and x < z) else (y if y < z else z)