3. Python中的分支判斷、迴圈

芒果和小貓發表於2019-01-31

本文利用的是Python 3.x版本,建議學習3.x版本

Python中的分支判斷、迴圈

1. 分支條件判斷

1.1 比較操作

以下是數之間常見的比較操作,例如5>3就是數學意義上的比較,5是大於3的,所以這個式子的值是True。如何比較,根據兩個數之間的符號判斷即可。這裡要注意的是!=是不相等的意思,==是相等的意思。例如5==3這顯然是不對的,所以式子的值是False

# i j是變數名
i > j
i >= j
i < j
i <= j
i == j
i != j

1.2 邏輯操作

not a #如果a是True則 結果為False,反之同理
a and b #同時為True時,結果為True
a or b #至少一個為True,結果為True

在布林值之間進行運算,之前說資料型別的時候也說過。我們說了例如5>3這樣的比較的式子的值是布林值,也就是說可以將式子進行邏輯運算。例如

5>3 and 5==3
#相當於True and False結果是False

下面是測試結果

3. Python中的分支判斷、迴圈

1.3 控制流,分支

計算機可以進行自動化操作,因為可以按照我們給定的條件判斷執行,所以分支判斷是必不可少的。簡單來說就是,如果條件A成立,那麼做些什麼,不成立做些什麼,例如如果今天下雨,我就不出門。

最簡單的條件判斷語句如下,有幾個地方容易出錯,條件後要用冒號,if條件塊裡的程式碼要進行縮排,4個空格,如果瞭解其他語言的同學應該知道,很多語言的程式碼塊是靠大括號{}來標識的。為什麼要有程式碼塊?程式碼塊內的程式碼的層次是一樣的。舉個例子,如果不區分程式碼塊,那麼如果if判斷條件成立後,程式碼究竟要執行到哪裡?所以當條件成立時,執行這個if後的程式碼塊內的內容。一定要注意縮排,不然在py中會出錯的。當然現在的程式碼編輯器多數都很智慧,在寫完冒號後敲擊回車,就可以自動縮排4個空格,我用的VScode就是這樣的,很方便。

#如果<條件>為True,則執行if塊
#裡的操作,注意縮排和冒號!!
if <條件>:
    操作1
    操作2
    ……
#例項
x = 6
if x>3 and x<8:
    print("hello")
#結果會列印出hello    

3. Python中的分支判斷、迴圈

接下來稍微複雜,就是if else,意思是如果if判斷的條件成立(結果為True),則執行if程式碼塊內的程式碼,如果不成立則執行else程式碼塊內的程式碼。簡單來說就是如果條件成立,則執行if程式碼塊內的程式碼,否則執行else內的程式碼。elseif一樣也要加冒號以及程式碼塊的縮排。

#先執行if的<條件>檢視是否為True,
#如果為True則進入if塊,不會進入
#else,如果為False則進入else,不進入if
if <條件>:
    操作1
    操作2
    ……
else:
    操作1
    操作2
    ……
#例項
x = 6
if x > 7:
    print(1)
else:
    print(2)
#結果會列印出2

接下來是多條件判斷,以上的判斷都是單條件,非此即彼的判斷。多條件判斷可以用多個條件來判斷,先檢視條件1是否成立,如果成立則進入程式碼塊執行,如果條件1不成立,繼續看條件2是否成立……多條件用elif也要加冒號以及程式碼塊縮排。

# 多重條件,先看是否能進if,
# 如果沒進則繼續判斷是否能進elif……
# 如果都沒進,且有else的話,進入else
if <條件1>:
    操作1
    操作2
    ……
elif<條件2>:# elif可以有多個
    操作1
    操作2
    ……
else:# else可以沒有
    表示式
    表示式
    ……
#例項
x = 6
if x > 10:
    print(1)
elif x > 7 and x < 9:
    print(2)
elif x > 4 and x < 7:
    print(3)
else:
    print(4)
#結果會列印出3

這裡再說一下多重條件和多個if的區別,在多重條件中,一旦某一條件成立,那麼之後的程式碼就不會執行了,就不會再去判斷之後的條件了。

if <條件1>:#每個條件都要判斷
    操作
if <條件2>:#每個條件都要判斷
    操作
if <條件3>:#每個條件都要判斷
    操作


if <條件1>:#如果條件1成立,不再判斷後面的條件
    操作
elif <條件2>:
    操作
elif <條件3>:
    操作

巢狀條件判斷,不建議過深的巢狀

if <條件1>:
    if <條件2>:
        操作
    else:
        操作
else:
    操作

練習一下,要求使用者從控制檯輸入兩個float數(x,y),要給出提示(例如:請輸入數x),判斷x y的大小,如果相等則輸出相等。如果x大則輸出x大,如果x小則輸出x小。如果x大於y時,如果y不等於0,則輸出x/y的數值。

x = float(input("請輸入數x:"))
y = float(input("請輸入數y:"))
if abs(x-y)<1.0e-9:
    print("x,y相等")
elif x > y:
    print("x大於y")
    if abs(y)>1.0e-9:
        print("x/y=",x/y)
else:
    print("x小於y")

3. Python中的分支判斷、迴圈

3. Python中的分支判斷、迴圈

3. Python中的分支判斷、迴圈

解釋一下abs(x-y)<1.0e-9abs是求絕對值函式,當xy的差值小於1^(-9)時,就認為xy是相等的,這是因為浮點數的表示是有誤差的,用==來比較很危險,所以只要在我們需要的精度內相等即可。

2. 迴圈

2.1 while loop

當我們需要執行大量相似的操作時,這時迴圈就派上用場了,首先說一下while迴圈。

while <條件>:#注意冒號和4個空格的縮排
    操作
    ……

如果<條件>True,則執行while塊裡的所有操作,然後繼續檢查<條件>是否為True,一直重複塊裡的表示式,直到<條件>False,如下例子

n = 0
while n < 5:
    print(n)
    n = n + 1

2.2 for loop

for迴圈,相對於while更加確定執行的次數,while根據條件來確定是否執行,而for通常是給定了執行的次數。

for <變數> in range(<一些數字>):
    <表示式>#注意冒號和4個空格的縮排
    ……
#例項
for v in range(6):
    print(v)
#結果會列印0-5
sum = 0
for i in range(101):
    sum = sum + i
#求0-100的和

相當於每次把值賦予給變數,然後在程式碼塊內部可以使用這個變數

2.3 range(start,stop,step)

預設的引數是start=0,代表從哪個數開始,step=1,代表步長,意味著每次增加多少,數的範圍是0~stop-1

mysum = 0
for i in range(7,10):
    mysum += i
print(mysum)
#求7 8 9的和
mysum = 0
for i in range(5,11,2):
    mysum += i
print(mysum)
#求5 7 9的和

2.4 break

break表示立即退出迴圈,跳過剩下在塊裡的表示式,僅僅退出最裡層的迴圈!簡單來說就是給一個條件,當這個條件成立時,退出迴圈,經常和if搭配使用。

mysum = 0
for i in range(5,11,2):
    mysum += i
    #當mysum等於5的時候,退出迴圈
    if mysum == 5:
        break
        musum += 1
print(mysum)

2.5 for和while的比較

for

  • 知道迭代的次數
  • 可以通過break提前結束迴圈
  • 使用計數器,因為有個變數可以幫助計數
  • 可以用while迴圈來重寫for迴圈

while

  • 迭代次數無限制
  • 可以通過break提前結束迴圈
  • 可以使用計數器,但是得提前初始化,並且每次得更新
  • 可能沒法用for迴圈重寫while

到此為止有了判斷、迴圈、輸入、輸出後,就可以寫一些簡單的程式了

如果覺得不錯,可以分享~,可以關注公眾號~
3. Python中的分支判斷、迴圈

相關文章