005:分支結構

if語句的使用

在Python中,要構造分支結構可以使用ifelifelse關鍵字。所謂關鍵字就是有特殊含義的單詞,像ifelse就是專門用於構造分支結構的關鍵字,很顯然你不能夠使用它作爲變量名。下面的例子中演示瞭如何構造一個分支結構。

"""
用戶身份驗證
"""
username = input('請輸入用戶名: ')
password = input('請輸入口令: ')
# 用戶名是admin且密碼是123456則身份驗證成功否則身份驗證失敗
if username == 'admin' and password == '123456':
    print('身份驗證成功!')
else:
    print('身份驗證失敗!')

需要說明的是,不同於C++、Java等編程語言,Python中沒有用花括號來構造代碼塊而是使用了縮進的方式來表示代碼的層次結構,如果if條件成立的情況下需要執行多條語句,只要保持多條語句具有相同的縮進就可以了。換句話說連續的代碼如果又保持了相同的縮進那麼它們屬於同一個代碼塊,相當於是一個執行的整體。縮進可以使用任意數量的空格,但通常使用4個空格,強烈建議大家不要使用製表鍵來縮進代碼,如果你已經習慣了這麼做,可以設置代碼編輯工具將1個製表鍵自動變成4個空格,很多的代碼編輯工具都支持這項功能。

提示ifelse 的最後面有一個:,它是用英文輸入法輸入的冒號;程序中輸入的'"=()等特殊字符,都是在英文輸入法狀態下輸入的。有很多初學者經常不注意這一點,結果運行代碼的時候就會遇到很多莫名其妙的錯誤提示。強烈建議大家在寫代碼的時候都打開英文輸入法(注意是英文輸入法而不是中文輸入法的英文輸入模式),這樣可以避免很多不必要的麻煩。

如果要構造出更多的分支,可以使用if...elif...else...結構或者嵌套的if...else...結構,下面的代碼演示瞭如何利用多分支結構實現分段函數求值。

"""
分段函數求值
"""
x = float(input('x = '))
if x > 1:
    y = 3 * x - 5
elif x >= -1:
    y = x + 2
else:
    y = 5 * x + 3
print(f'f({x}) = {y}')

當然根據實際開發的需要,分支結構是可以嵌套的,例如判斷是否通關以後還要根據你獲得的寶物或者道具的數量對你的表現給出等級(比如點亮兩顆或三顆星星),那麼我們就需要在if的內部構造出一個新的分支結構,同理elifelse中也可以再構造新的分支,我們稱之爲嵌套的分支結構,也就是說上面的代碼也可以寫成下面的樣子。

"""
分段函數求值
"""
x = float(input('x = '))
if x > 1:
    y = 3 * x - 5
else:
    if x >= -1:
        y = x + 2
    else:
        y = 5 * x + 3
print(f'f({x}) = {y}')

說明: 大家可以自己感受和評判一下這兩種寫法到底是哪一種更好。在Python之禪中有這麼一句話:“Flat is better than nested”,之所以提倡代碼“扁平化”是因爲嵌套結構的嵌套層次如果很多,會嚴重的影響代碼的可讀性,所以能使用扁平化結構時就不要使用嵌套結構。

一些例子

例子1:英制單位英寸與公制單位釐米互換。

"""
英制單位英寸和公制單位釐米互換
"""
value = float(input('請輸入長度: '))
unit = input('請輸入單位: ')
if unit == 'in' or unit == '英寸':
    print('%f英寸 = %f釐米' % (value, value * 2.54))
elif unit == 'cm' or unit == '釐米':
    print('%f釐米 = %f英寸' % (value, value / 2.54))
else:
    print('請輸入有效的單位')

例子2:百分制成績轉換爲等級製成績。

要求:如果輸入的成績在90分以上(含90分)輸出A;80分-90分(不含90分)輸出B;70分-80分(不含80分)輸出C;60分-70分(不含70分)輸出D;60分以下輸出E。

"""
百分制成績轉換爲等級製成績
"""
score = float(input('請輸入成績: '))
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'E'
print('對應的等級是:', grade)

例子3:輸入三條邊長,如果能構成三角形就計算周長和麪積。

"""
判斷輸入的邊長能否構成三角形,如果能則計算出三角形的周長和麪積
"""
a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a:
    peri = a + b + c
    print(f'周長: {peri}')
    half = peri / 2
    area = (half * (half - a) * (half - b) * (half - c)) ** 0.5
    print(f'面積: {area}')
else:
    print('不能構成三角形')

說明: 上面通過邊長計算三角形面積的公式叫做海倫公式。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章