【原創文章】歡迎正常授權轉載(聯繫作者)
【反對惡意複製粘貼,如有發現必維權】
【微信公衆號原文傳送門】
條件判斷與循環是計算機自動化的基礎,本節教程將簡單介紹Python下判斷與循環的基本使用。
01 條件判斷
(1)if 條件判斷
條件判斷主要與布爾值打交道,如果不熟悉這一基本數據類型,可以查看我之前的文章(點我就到),話不多說直接上語法。
# 單條件
if 條件1:
業務代碼1
else:
業務代碼2
# 多條件情況
if 條件1:
業務代碼1
elif 條件2:
業務代碼2
....
elif 條件k:
業務代碼k
else:
其他
單條件時,很簡單也很好理解,條件1爲真執行業務代碼1,不滿足執行業務代碼2。多條件時,從第一個條件開始,哪一個條件爲真就執行對應的業務代碼,執行完後直接跳出該條件判斷代碼塊。
需要強調的是:一定注意代碼中的空格及對齊,與c++不同,爲了開發者高效的開發,Python中減去了一些繁瑣的操作,例如:一句代碼結束不使用分號,代碼塊不使用大括號而使用對齊等。因此,很多初學者總會出現,代碼沒有錯,但是運行時總是出現報語法錯誤,多半是對齊的問題。
(2)條件表達式
條件表達式除了可以使用基本的邏輯運算符和關係運算符外,Python還支持一些特殊的運算,總結如下:
- 大於或大於等於 ---- > 或 >=;
- 小於或小於等於 ---- < 或 <=;
- 等於 ---- ==;
- 不等於 ---- !=;
- 與 ---- and;
- 或 ---- or;
- 非 ---- not;
- 是 ---- is;
- 包含 ---- in
a = 10
if 0 < a <= 12: # Python中支持這樣的關係表達式連寫
print('ha ha ha ')
else:
print('he he he')
if a != 10: # 此時a等於10 因此下面的業務代碼不執行,跳到下一條件
print('老子不是10')
elif not a: # a=10,對應的布爾值爲True,not a 是False
print('a的布爾值是False')
else:
print(a)
運行結果:
ha ha ha
10
着重說一下 is 和 in 的用法。
is是判斷比較的是兩個實例對象是不是完全相同,它們是不是同一個對象,佔用的內存地址是否相同。先來看代碼。
a = 10
b = 10
st = 'I\'m a boy!'
st2 = 'I\'m a boy!'
print('a is b:', a is b)
print('st is st2:', st is st2)
ls = [12, 45, 'st', a]
ls2 = [12, 45, 'st', a]
t = (12, 's')
t2 = (12, 's')
dic = {'name': 'Tom'}
dic2 = {'name': 'Tom'}
print('ls is ls2:', ls is ls2)
print('t is t2:', t is t2)
print('dic is dic2:', t is t2)
運行結果:
a is b: True
st is st2: True
ls is ls2: False
t is t2: False
dic is dic2: False
上述代碼中a,b明顯是不同的變量,只是有同樣的值,根據is的功能來看,a is b的結果應該是False,爲什麼會判斷他們是一樣的呢?而且似乎對於整數和字符串而言,is與 == 沒有什麼區別。其實這與Python內部的緩存機制有關,Python會對一些較小的對象進行緩存,下次用的時候直接從緩存中獲取這個小對象,上面代碼中的整數和字符串就屬於這種情況,因此,a is b的結果True。當對象較大時就會發生變化,例如下面的代碼:
a = 10 * 1000000000000000000
b = 10 * 1000000000000000000
st = 'I\'m a boy!' * 1000 # 表示將前面的字符串重複1000次並連接
st2 = 'I\'m a boy!' * 1000
print('a is b:', a is b)
print('st is st2:', st is st2)
運行結果:
False
False
結果是不是不一樣了,這次對象較大,a 與 b就不是同一個對象了。
通常在條件表達式中,in 用於判斷對象是否存在另一可迭代對象(包含多個子對象)中,這裏的可迭代對象不包括生成器。具體用法如下所示:
# 字符串中
st = 'I\'m a boy!'
print('a' in st)
# 列表中
ls = [12, 45, 'st']
print(12 in ls)
# 元組中
t = (12, 's')
print('s' in t)
# set 中
s = set([4, 4, 5, 6, 7]) # 這裏是 set 數據類型
print(s)
print(4 in s)
執行結果:
True
True
True
{4, 5, 6, 7}
True
02 循環
(1)for 循環
for 元素 in 迭代對象:
循環體
語法非常簡單,每次循環時,從迭代對象中依次“拿出”元素,然後執行循環體,直到迭代對象中沒有元素時結束。(這裏“拿出”只是形象的說法,並不是真的將迭代對象中的元素拿出來,這個過程只獲得元素,並不對迭代對象進行實質性的改變。)
sl = 'abcdefg'
for s in sl:
print(sl)
ls = [1, 2, 3, 4, 5]
for num in ls:
print(num)
是不是很方便?直接就獲得對象,不用像c語言一樣使用計數加索引的方式來處理。
有時候我們只是要循環固定次數,怎麼做呢?配合 range 函數就可以了。
for i in range(需要循環的次數):
循環體
有時候有了循環的迭代對象,但需要知道當前元素的索引,添加一個變量來計數嗎?其實Python還提供了 enumerate 函數可以快速簡單的實現這一常用需求。
sl = 'abcd'
for index, s in enumerate(sl):
print(index, s)
運行結果:
0 a
1 b
2 c
3 d
(2)while 循環
while 條件表達式:
循環體
執行到while 循環代碼塊時,先判斷條件表達式的值,結果是True時執行循環體,之後再判斷-循環,直到條件表達式的值爲False時停止。
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
執行結果:
2500
(3)循環中的控制
循環中的控制主要指在一定特殊情況下跳過或跳出循環,主要涉及到 break 與 continue 語句。 break :直接跳出整個循環; continue :從此處跳過後續循環內容。
for 元素 in 迭代對像:
...
if 跳出循環條件:
break
if 跳過循環條件:
continue
...
while 循環條件:
...
if 跳出循環條件:
break
if 跳過循環條件:
continue
...
本文配套源代碼下載地址:
關注下方公衆號,回覆關鍵字即可獲取
回覆“ Python基礎教程源代碼 ”獲取。