1. 程式人生 > 實用技巧 >Python 條件語句(if..elif..else)

Python 條件語句(if..elif..else)

條件語句

一、if條件判斷

1.if條件判斷的基本形式

Python中,if語句用於控制程式的執行,基本形式為:

if 判斷條件: 判斷條件可為:邏輯、成員運算、比較運算

  (縮排) 執行語句........ (當判斷的條件成立時,就會執行if內的語句)

else: (else後面沒有表示式)

  (縮排)執行語句........ (當if條件不成立,則會執行else內的語句)

  • "判斷條件"成立時(非零),則執行其後面的語句,執行內容可以是多行,可以縮排來區分表示同一個範圍
  • else 為可選語句 在if判斷條件不成立時,才會執行
  • 縮排 遇到冒號就要縮排,這是語法,一個標椎的縮排等於四個空格,但是四個空格不等於一個tab鍵。Python中可以使用tab鍵,進行縮排,但是這種操作是不規範的,一般用的是4個空格

例子如下:(一個簡單的 if....else 判斷)

比較運算子的使用:

#根據輸入的年齡來判斷是否成年
my_age=int(input('請輸入你的年齡:'))   #input輸入的資料型別為str

if my_age>=18:
    print('你已經成年')
else:
    print('你還未成年')

輸出結果:
請輸入你的年齡:14
你還未成年

成員運算子的使用:

#成員運算子和邏輯運算子的結合使用
my_str='蘋果、橘子、香蕉、梨、葡萄'
if ('蘋果' and '葡萄') in my_str:
    print('蘋果和葡萄是我最喜歡的水果之一
') else: print('水果列表中沒有我喜歡的水果') 輸出結果: 蘋果和葡萄是我最喜歡的水果之一

邏輯運算子的使用

#結合列表索引和比較運算子和邏輯運算子
a=[2,3,5,6]
if (a[0]>a[1]) and a[1]>a[2]:
    print('列表中的前三個數字排列順序是由大到小排列')
else:
    print('列表中的前三個數字排列順序是由小到大排列')


輸出結果:
列表中的前三個數字排列順序是由小到大排列

2. if....elif.....elif.....else....

在一個if表示式中,即一個完整的 if.....elif....elif.....else....中,如果運行了其中一個條件,其他分支條件就不會再運行了

總結:當其中一個條件滿足,其他的條件分支自動遮蔽,不會再執行

'''
1、一家商場在降價促銷,所有原價都是整數(不需要考慮浮點情況),如果購買金額50-100元(包含50元和100元)之間,會給10%的折扣,

如果購買金額大於100元會給20%折扣。編寫一程式,詢問購買價格,再顯示出折扣(%10或

20%)和最終價格。

'''
#先詢問購買的價格,再做接下來的判斷
price=int(input('請輸入你的購買價格:'))

if 50<=price<=100:
    #Discount享受的折扣價
    Discount = price * 0.1
    print('您將享受10%的折扣')
    print('您最終支付金額為:{}'.format(price - Discount))
elif price>100:
    # Discount享受的折扣價
    Discount = price * 0.2
    print('您將享受20%的折扣')
    print('您最終支付金額為:{}'.format(price - Discount))
else:
    print('您當前的不享受任何優惠')
'''
2 判斷是否為閏年
提示:

輸入一個有效的年份(如:2019),判斷是否為閏年(不需要考慮非數字的情況)
如果是閏年,則列印“2019年是閏年”;否則列印“2019年不是閏年”
什麼是閏年,請自行了解(需求文件沒有解釋)
'''
'''
閏年分為:普通閏年和世紀閏年
普通閏年:公曆年份是4的倍數的,且不是100的倍數,為普通閏年。(如2004年就是閏年);
世紀閏年:公曆年份是整百數的,必須是400的倍數才是世紀閏年(如1900年不是世紀閏年,2000年是世紀閏年);
'''
year=int(input('請輸入一個有效的年份(如:2020):'))

'''
普通閏年:年份是4的倍數,且不是100的倍數 
世紀閏年:必須是400的倍數
普通閏年的計算方法,能被4整除但不被100整除,year % 4==0 and year % 100!=0
世紀閏年的計算方法,能被400整除,year % 400==0
'''

if year % 4==0 and year % 100!=0:
    print('{}年是普通閏年'.format(year))
elif year % 400==0:
    print('{}年是世紀閏年'.format(year))
else:
    print('{}年不是閏年'.format(year))

3.if後面最關心的是什麼? 判斷條件語句是為真還是為假(也就是,是True還是False)

形式:if a:(其中隱含有bool(a),是True還是False)

  • if not a: 用來判斷某個變數是否為空,是否存在(實際使用過程中,使用的非常多的判斷條件)
  • a是None、0、[]、{}、().......等都為False 也就等同於if False:,也就是條件不成立,不會執行if條件下的語句,而是執行else下的語句
  • a是非空型別,也就是等同於 if True:,也就是條件成立,直接執行if下的語句。(不會再去處理else下的語句)
  • 條件語句為True
    if True:
        print('我是對的')
    else:
        print('你是最厲害的')
    
    輸出結果:
    我是對的
  • 條件語句為False
    if False:
        print('你是對的')
    else:
        print('我是最厲害的')
    
    輸出結果:
    我是最厲害的

4.else是可選擇語句 在判斷條件不成立時,執行相關語句

else不是必備的,在條件判斷中,加不加else,可以根據自己實際的業務邏輯進行使用。

5.if的巢狀使用

Python在執行一個檔案時,會檢視所有頂格寫的程式碼。一個完整的if表示式只會看某一個滿足條件的語句

'''
3.求三個整數中的最大值
提示:定義 3 個變數
'''
#先自定義3個變數並賦值
num1=6
num2=10
num3=20
if num1>num2:
    if num1>num3:
        print('最大值為:{}'.format(num1))
else:
    if num2>num3:
        print('最大值為:{}'.format(num2))
    else:
        print('最大值為:{}'.format(num3))

輸出結果:
最大值為:20

6.工作中使用最多的結構:if......if ......if .....else

if 1:
    pass
if 2:
    pass
if 3:
    pass
else:
    print('hello') #else是最後一個if成對的