【Python入門教程05】3分鐘學會條件判斷與循環, is與==的區別

【原創文章】歡迎正常授權轉載(聯繫作者)
【反對惡意複製粘貼,如有發現必維權】
【微信公衆號原文傳送門


在這裏插入圖片描述
​條件判斷與循環是計算機自動化的基礎,本節教程將簡單介紹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

着重說一下 isin 的用法。

  • is 的基本用法

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

上述代碼中ab明顯是不同的變量,只是有同樣的值,根據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

結果是不是不一樣了,這次對象較大,ab就不是同一個對象了。

  • in 的基本用法

通常在條件表達式中,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)循環中的控制

循環中的控制主要指在一定特殊情況下跳過或跳出循環,主要涉及到 breakcontinue 語句。 break :直接跳出整個循環; continue :從此處跳過後續循環內容。

for 元素 in 迭代對像:
  ...
  if 跳出循環條件:
    break
  if 跳過循環條件:
    continue
  ...
    
while 循環條件:
  ...
  if 跳出循環條件:
    break
  if 跳過循環條件:
    continue
  ...

本文配套源代碼下載地址:
關注下方公衆號,回覆關鍵字即可獲取

回覆“ Python基礎教程源代碼 ”獲取。


如果你讀後有收穫,歡迎關注我的微信公衆號
上面有更多完全免費教程,我也會不定期更新
ღ ღ ღ 打開微信掃描下方二維碼關注 ღ ღ ღ

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章