1. 程式人生 > >零基礎入門學習Python(8)--了不起的分支和迴圈2

零基礎入門學習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)