3. Python中的分支判斷、循環

本文利用的是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

下面是測試結果oop

圖片描述

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內的代碼。elseif同樣也要加冒號以及代碼塊的縮進。spa

#先執行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也要加冒號以及代碼塊縮進。code

# 多重條件,先看是否能進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的區別,在多重條件中,一旦某一條件成立,那麼以後的代碼就不會執行了,就不會再去判斷以後的條件了。blog

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的數值。input

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-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

到此爲止有了判斷、循環、輸入、輸出後,就能夠寫一些簡單的程序了

若是以爲不錯,能夠分享~,能夠關注公衆號~

圖片描述

相關文章
相關標籤/搜索