Python的數據類型在前幾節我們都簡單的一一介紹了,接下來我們就要講到Python的控制判斷迴圈語句 在現實編程中,我們往往要利用電腦幫我們做大量重覆計算的工作,在這樣的情況下,需要機器能對某個條件進行判斷,或是對某個行為進行重覆操作 這時我們就必須要知道如何去編寫迴圈判斷語句 if... el ...
Python的數據類型在前幾節我們都簡單的一一介紹了,接下來我們就要講到Python的控制判斷迴圈語句
在現實編程中,我們往往要利用電腦幫我們做大量重覆計算的工作,在這樣的情況下,需要機器能對某個條件進行判斷,或是對某個行為進行重覆操作
這時我們就必須要知道如何去編寫迴圈判斷語句
if... elif... else
if也就是如果的意思,後面需要加一個判斷條件,如果判斷條件為真,則執行if下的操作,如果為假則跳過操作
註意在每個判斷條件後面要加上冒號,且if下麵的語句要註意縮進
In [1]: num = 20 In [2]: if num > 10: ...: print("條件成立") ...: 條件成立
tips:“ = ” 和 “ == ”的區別:一般的一個等號代表的是賦值,在迴圈中只能用來和對象名進行比較,“ == ”雙等號可以直接用來與值進行比較,例如數字,和字元串
例如
In [3]: name = "susmote" In [4]: if name == "susmote": ...: print("名字是susmote") ...: 名字是susmote In [5]: if name = "susmote": #如果不用“==”比較值,則會報語法錯誤 ...: print("名字是susmote") ...: File "<ipython-input-5-06510f3ebd56>", line 1 if name = "susmote": ^ SyntaxError: invalid syntax
其他的關係運算符如下
大於等於 >=
小於等於 <=
elif在其他語言中叫 “ else if ”,python簡化了這個表達式,elif一般是用來判斷多個表達式的,也就是說在一個判斷語句中可以有多elif,這個也有點類似於其他語言的switch case,當然也要加上else
In [8]: num = 20 In [9]: if num > 20: ...: print("num大於20") ...: elif num == 20: ...: print("num等於20") ...: elif num < 20: ...: print("num小於20") ...: num等於20
else下麵的執行語句只有當前面的條件都不滿足時,才會執行,else在一個判斷語句中也是可選的,但為了程式能更清晰的運行,建議還是都加上
一個完整的if,, elif ... else語句
num = input("請輸入一個不大於5的數: ") num = int(num) if num == 0: print("這個數字是0") elif num == 1: print("這個數字是1") elif num == 2: print("這個數字是2") elif num == 3: print("這個數字是3") elif num == 4: print("這個數字是4") elif num == 5: print("這個數字是5") else : print("你輸入的數不符合要求")
運行結果
[root@localhost ~]# python3 a.py 請輸入一個不大於5的數: 3 這個數字是3 [root@localhost ~]# python3 a.py 請輸入一個不大於5的數: 14 你輸入的數不符合要求
while
while迴圈的正確定義是 while() 括弧裡面需要加一個判斷條件,如果裡面的判斷為真,則一直執行下麵的語句,知道while的判斷條件為假才跳出迴圈
In [1]: num = 10 In [2]: while(num > 0 ): ...: print(num) ...: num -= 1 ...: 10 9 8 7 6 5 4 3 2 1
當然如果條件一直為真則形成死迴圈,裡邊的語句一直會執行,一般程式還是儘量不要出現死迴圈,死迴圈很耗系統資源
在這裡講一下條件判斷中常用的布爾類型:
布爾類型只有真和假兩個值,True or Flase
一般所有的字元串都代表真,數字中只有0是代表假 false
In [15]: while(0): ...: print("條件為假,什麼都不做") ...:
for
for迴圈在其他語言中,如C,java,只能通過數字進行迴圈迭代,Python中你可以對任意有順序的數據進行for迴圈獲取值,如列表和字元串
python中for迴圈的語句結構 for item in sequence item代表獲取到的每個值,sequence代表可迴圈的數據,列表或字元串
例如
In [16]: info = ["susmote", "18", "13488888888"] In [17]: for item in info: ...: print(item) ...: susmote 18 13488888888
如果是操作一個列表的話,你還可以對他進行其他的改變,如通過for迴圈對列表內元素進行排序(最原始的辦法,一個個判斷)
In [28]: for i in num: ...: if i < num[0]: ...: num.remove(i) ...: num.insert(0, i) ...: elif i < num[1]: ...: num.remove(i) ...: num.insert(1,i) ...: elif i < num[2]: ...: num.remove(i) ...: num.insert(2, i) ...: elif i < num[3]: ...: num.remove(i) ...: num.insert(3, i) ...: elif i < num[4]: ...: num.remove(i) ...: num.insert(4,i) ...: In [29]: num Out[29]: [1, 3, 5, 6, 7, 9]
後續在講排序演算法
range()
如果你需要重覆的生成一組有規律的數字,這時你就需要用到range函數了,他能夠生成遞進的數字
例如與for迴圈結合
In [34]: for i in range(5): ...: print(i) ...: 0 1 2 3 4
預設是從0開始迭代生成的
range可以傳三個參數 range( a, b ,c ) a代表開始的數字,b代表結束的數字,c代表增量(可為負數)
調用range方法時只傳一個參數,a預設為0, b則是你傳入的參數,c預設為1
調用range方法時傳兩個參數,a就是第一個參數,b是後面一個參數,c預設為1, 記住包頭不包尾
例如
In [42]: for i in range(2, 6): ...: print(i) ...: 2 3 4 5 In [43]: for i in range(2, 10, 2): ...: print(i) ...: 2 4 6 8
當然也可以為負數
In [44]: for i in range(-10, -80, -10): ...: print(i) ...: -10 -20 -30 -40 -50 -60 -70
對於一個列表,你還可以遍歷他的索引,獲取值
In [45]: weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunda ...: y"] In [46]: for i in range(len(weekdays)): ...: print(i, weekdays[i]) ...: 0 Monday 1 Tuesday 2 Wednesday 3 Thursday 4 Friday 5 Saturday 6 Sunday
一般我們在進行上述操作時,為了更方便,我們都是使用 enumerate()方法的,他能直接迭代生成索引,這個之後再講
range()返回的值不是一個列表,只是一個對象,我們把這種對象叫做可迭代對象
我們不僅能夠通過for迴圈輸出對象迭代的值,還能直接通過 list() 直接生成列表
In [47]: print(range(10)) range(0, 10) In [48]: list(range(10)) Out[48]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]