Python 基礎起步 (九) 條件語句 if elif else 其實很簡單

alpha94511發表於2019-01-30

大家好,在我們上一篇複習了dict的基礎和實用技巧後,今天我們來看一下Python裡的邏輯關係,所謂邏輯關係無非就是如果...就...否則...之類的,不是非常複雜,我的意思是複雜的地方不用目前瞭解,因為已經超出了小白的水準,哈哈,閒話少說,讓我們一起來看看吧~

什麼是if

Python裡面用if-else的形式
if <expr>:                 #如果滿足什麼條件
    <statement>            #就執行什麼步驟

注意有兩點:

  • if 後面的判斷結果就是True和False兩種型別,如果True,將執行statement的步驟1
  • statement那裡一定有縮排,寫在if條件裡面

讓我們拿實際的情況看看具體是什麼意思:

x = 0
y = 5

if x < y:                            # True
    print('yes')


if y < x:                            # False
    print('yes')


if x:                                # Falsy  
    print('yes')

if y:                                # Truthy
    print('yes')



if x or y:                           # Truthy
    print('yes')


if x and y:                          # Falsy
    print('yes')


if 'aul' in 'grault':                # Truthy
    print('yes')


if 'quux' in ['foo', 'bar', 'baz']:  # Falsy
    print('yes')

我給大家解釋一個可能產生的疑問,就是如下這個條件式:

if x:                                # Falsy  
    print('yes')

這裡為什麼是錯誤的呢,因為很簡單,在Python裡預設1就是True,0就是False,這裡x的值正好是0,和ython預設的規定的一樣,所以這個判斷也是錯的,大家明白了吧~

滿足if條件後有多個statements執行

用大白話講就是說如果滿足了if的條件,那麼你有很多事情想依次執行,而且在做完這些事情後完成了條件,開始下一項任務,那麼這種情況下呼叫形式如下圖:

if <expr>:
    <statement>
    <statement>
    ...
    <statement>
<following_statement>

clipboard.png

感覺還是圖片比較容易理解哈哈~ 讓我們來看一個真實的例子:

if 'foo' in ['bar', 'baz', 'qux']:
    print('Expression was true')
    print('Executing statement in suite')
    print('...')
    print('Done.')
print('After conditional')

這段程式碼完美的展示了圖片中講解的內容,大家可以猜猜結果,這段程式碼執行後會輸出什麼。
現在公佈答案:

After conditional

簡單說一下,很簡單,我們想要看看'foo' 這個字串是否在陣列['bar', 'baz', 'qux']裡面,如果在,一次執行底下的縮排的4個print方法,如果不在,跳出if,繼續該幹什麼幹什麼,所以顯然易見'foo'不在陣列裡,因此直接執行最後的print('After conditional')

多個if在一起

大家看一下下面的程式碼,如果你預想的輸出結果和實際的一樣,那恭喜你已經徹底明白if是什麼東西了

# Does line execute?                        Yes    No
#                                           ---    --
if 'foo' in ['foo', 'bar', 'baz']:        #  x
    print('Outer condition is true')      #  x

    if 10 > 20:                           #  x
        print('Inner condition 1')        #        x

    print('Between inner conditions')     #  x

    if 10 < 20:                           #  x
        print('Inner condition 2')        #  x

    print('End of outer condition')       #  x
print('After outer condition')            #  x

輸出結果為:

Outer condition is true
Between inner conditions
Inner condition 2
End of outer condition
After outer condition

if else

在Python中使用if else 的表達模板如下:

if <expr>:
    <statement(s)>
else:
    <statement(s)>

大家想必很容易看懂,現在舉個栗子:

x = 20

if x < 50:
    print('(first suite)')
    print('x is small')
else:
    print('(second suite)')
    print('x is large')

輸出結果為:

(first suite)
x is small

很容易理解了,如果滿足if條件如何,else否則怎麼怎麼樣

if,elif ,else

讓我們來看最後一種情況,也很好弄懂,elif的意思就是else if 的縮寫而已,表達模式如下:

if <expr>:
    <statement(s)>
elif <expr>:
    <statement(s)>
elif <expr>:
    <statement(s)>
    ...
else:
    <statement(s)>

看一個具體例項:

name = 'Joe'
if name == 'Fred':
    print('Hello Fred')
elif name == 'Xander':
    print('Hello Xander')
elif name == 'Joe':
    print('Hello Joe')
elif name == 'Arnold':
    print('Hello Arnold')
else:
    print("I don't know who you are!")

輸出結果為:

Hello Joe

總而言之就是如果不滿足第一個if條件,接著看是否滿足第二個if條件,然後是第三個...

if 寫在一行裡

Python有一個好處就是它非常懶,很多東西它會自己想辦法減少程式碼量,所以就出現了以下這種寫法:

if <expr>: <statement>
if <expr>: <statement_1>; <statement_2>; ...; <statement_n>

分別看兩個例子,第一個簡單一些的:

if 'f' in 'foo': print('1'); print('2'); print('3')
Out:1
     2
     3

稍微複雜一些的:

x = 2
if x == 1: print('foo'); print('bar'); print('baz')
elif x == 2: print('qux'); print('quux')
else: print('corge'); print('grault')

Out: qux
     quux

總結

  • 基本的條件語句常見的就這幾種
  • 個人建議不要寫一行,還是拆成多行寫,這樣思路清晰

相關文章