本文利用的是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
下面是測試結果
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
接下來稍微複雜,就是if else
,意思是如果if
判斷的條件成立(結果為True
),則執行if
程式碼塊內的程式碼,如果不成立則執行else
程式碼塊內的程式碼。簡單來說就是如果條件成立,則執行if
程式碼塊內的程式碼,否則執行else
內的程式碼。else
和if
一樣也要加冒號以及程式碼塊的縮排。
#先執行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")
解釋一下abs(x-y)<1.0e-9
,abs
是求絕對值函式,當x
和y
的差值小於1^(-9)
時,就認為x
和y
是相等的,這是因為浮點數的表示是有誤差的,用==
來比較很危險,所以只要在我們需要的精度內相等即可。
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
到此為止有了判斷、迴圈、輸入、輸出後,就可以寫一些簡單的程式了
如果覺得不錯,可以分享~,可以關注公眾號~