很高興又和大家見面了,上一節課,我們學習了for循環與while循環。
也對比了for循環與while循環的區別
這節課的任務是更加深入的學習循環語句的用法。
接上節課講到:
之前講到while循環後面a<4是while循環的設定條件,只有滿足條件時,循環才能執行。
在上面這個例子中,執行順序是:1、先定義變量a, 將0賦值給a。 2、進入while循環設定條件a<4,計算機滿足條件就會執行,江湖術語,滿足條件就為真,也叫條件為True,之後進入循環體。
3. 進入循環體後,執行a = a+1, print(a), 一次又一次的執行,直到a=4時,4已經不滿足a<4的條件了,此時條件為假,也就是條件為False, 這段循環就結束.
那這節課,我們來探究一下這個設定條件的True與False。
用數據做判斷:布爾值
在while循環之前,我們學過if…elif…else語句,這其中也涉及到用數據做判斷。
但是,if語句中的條件與while語句中的條件有區別:if語句中的條件只判斷一次,while語句中的判斷會一直循環執行。
這個「判斷」的過程,在計算機中是如何運行的呢?
計算機的判斷,只有兩種結果,要麼是True(條件為真), 要麼為False(條件為假)。True與False叫做布爾值,這個判斷真假的過程,叫做【布爾計算】。
先來個例子,體會一下。
運行一下下面代碼, 觀察終端裡的效果。
print() 語句中的計算就是【布爾計算】,終端上要麼顯示True,要麼顯示False。
print(3<6)與print(3>6)這兩句很簡單啦,判斷大小
print('中國'=='中國') 與 print('北京'=='首都')這是比較字符串。兩個字符串』中國『相等,結果顯示True, 拿『北京』與『首都』做對比,兩個字符串不相等,但是用的是「==「號,所以,顯示False
只有當條件為False時,if與while才會結束循環執行後面的語句。
while False:
print('我是Fasle,列印不出來')
你會發現終端裡什麼也不會列印。
這是因為while循環執行,必須要while後的條件為「真「,而【布爾值】False本身就為假,所以這個循環一次都不會執行。
再運行下下面代碼,觀察終端裡的效果。
while 3>6:
它也不會運行,因為3>6這個判斷不對呀,它為假,就不會執行啊。
那我們換一換,把3>6換成3<6,來運行一下。(注意:點擊運行後,滑鼠點擊終端區域,按【Ctrl+C】來強制結束運行,報錯後跳過本題)
import time
while 3<6:
time.sleep(1)
print('列印出來')
你會發現,終端裡會一直列印
來解釋一下這是為什麼?這是因為3<6這個判斷是正確的, 也就是這個條件為True,代表著條件永遠正確。所以代碼就陷入了死循環。
我們做一個總結。
在我們已經知道了什麼是布爾值與布爾運算。接著我們來看一下布爾運算的三種形式。
兩個數值做比較
剛才3>6與3<6都屬於兩個數值做比較。
用兩個數值做比較的【布爾運算】,主要包含以下情況:
這是幾種在判斷中常用的符號。
再區分一次"="表示賦值,"=="才表示相等。
接下來看布爾運算的第二種方式:直接用數值做運算。
運行一下下面代碼, 觀察終端裡的效果。(注意:點擊運行後,滑鼠點擊終端區域,按【Ctrl+C】來強制結束運行,報錯後跳過本題)
while 1:
print('首都')
你會發現,又陷入死循環了。
這段代碼很怪,while後面的條件只寫了一個數字1。
其實,在這裡整數1是作為一個判斷條件,被判斷為真(True),這就是數值作為條件, 被判斷真假的情況。
在Python江湖中已經設定好什麼數據為真,什麼數據為假。假的是有限的,那麼除了假的,就都是真的。請看下圖:
這個表中左側的都是假的,比如False、0、『』空字符串等等。 其餘的都是真的了
if '開心':
print('北京')
if 0:
選擇題
請問這段程序執行後,終端會顯示什麼?
A:什麼都不顯示。
B:顯示「北京「」首都「。
C:只顯示「北京「。
選C。 if 『開心『,條件為真,會執行print('北京'); if 0條件為假,不執行print('首都')
送大家一個寶盒,bool()函數,bool()函數用來判斷一個數據為真還是為假。有點和type()相似吧。
先來個試驗,運行一下下面代碼, 觀察終端裡的效果。
# 請閱讀代碼後再直接運行
print('以下數據判斷結果都是【真】:')
print(bool(True))
print(bool(10))
print(bool('xyz'))
print('以下數據判斷結果都是【假】:')
print(bool(False))
print(bool(0))
print(bool(''))
print(bool(None))
現在,你懂的直接用數值做布爾運算是怎麼一回事了吧。
下面,來看一下第三種情況。
布爾值之間的運算
你會接觸到and、or、not、in、not in五種運算。
先運行一下下面代碼, 觀察終端裡的效果。
# 請先閱讀代碼,然後直接運行
a = 5
b = -5
print('以下是and運算')
if a==5 and b==5: # 【b實際上是-5】
print('True')
else:
print('False')
print('以下是or運算')
if a==5 or b==5: # 【b實際上是-5】
看到終端裡面的結果了嗎?
a==5 and b==5的意思是【a==5並且b==5】, 只有兩個條件都為真的時候,才能判斷為True。 而a==5 or b==5的意思是【a==5 或者 b==5】這兩個條件只要滿足其中一個,就判斷為True。
來,總結以下and與or。
x=6
y=-5
z=0
q=10
if x<y and z<q:
print('True')
else:
print('False')
選擇題
觀察上面代碼,如果運行代碼,終端中的結果是?
A:Ture
B:False恭喜你答對了,選B。x
接下來我們看一下not, not就是相反的意思。not False就是True, not True就是False。
最後,我們看一下【in】與【not in】
【in】的意思「判斷一個元素是否在一堆數據之中」,【not in】相反。
你應該能直接看出,1在list中,10與0不在list中。
運行一下下面代碼, 觀察終端裡的效果。
# 請先閱讀代碼,然後直接運行
list = [1,2,3,4]
a = 1
b = 10
c = 0
print(bool(a in list))
print(bool(b in list))
print(bool(c in list))
是不是和我們猜的一樣?
到這裡,我們學習了5種布爾值的運算方式。做個總結
好了,布爾值的運算學完了, 我們下面學習一下四種新的語句。
四種新語句
這四種新語句可以與循環搭配使用,能夠讓循環有不同的效果。
break語句
break語句的意思就是「打破」,在Python江湖中用來結束循環的。
運行一下下面代碼, 觀察終端裡的效果。
運行後,你會發現,本來for循環與while循環是可以從1列印到9的,結果由於break, 只能從1列印到5,這就是break的作用。在循環內使用,用來結束循環。
注意好縮進哦。
continue語句
break看完之後,再看一下continue語句。
continue的意思是「繼續」。這個語句也是在循環內部使用的。當某個條件被滿足的時候,觸發continue語句,結束本次循環, 從下一次循環繼續執行。
運行一下下面代碼, 觀察終端裡的效果。
運行結束後,你會發現,兩個循環中,都沒有列印數字【5】,但是和break不同的是,數字【5】之後的內容都列印出來了
就是continue,它只能跳過本次的循環,但是這次之後的循環仍然會執行。
pass語句
pass很常見,就是我們理解的「跳過」。
運行一下下面代碼, 觀察終端裡的效果。
這個代碼的意思是:當age>=18的時候,跳過,什麼都不做。其他情況age<18的時候,執行 print('你未成年,不得進入網吧')語句。
So Easy
else語句
else語句不僅能夠在if語句中使用,還能夠和循環搭配使用。
舉一個例子:
for i in range(3):
num = int(input('請輸入0結束循環,你有3次機會:'))
if num == 0:
print('你觸發了break語句,導致else語句不會生效。')
break
else:
print('3次循環你都錯過了,else語句生效了。')
以上代碼,你可以做兩種嘗試:1、連續3次不輸入0; 2、輸入一次0跳出循環,完成一種嘗試後,你可以點擊【重做】按鈕,再來一次嘗試。
一句話總結,當循環中沒有碰到break語句,就會執行循環後面的else語句,否則就不會執行。
和上面一樣,看一下else與while循環的搭配使用。運行一下下面代碼, 觀察終端裡的效果。
break、continue、pass、else都是和循環搭配使用的,也能夠跳出循環。
到這裡,我們四種語句都學完了,做個總結。
好了,今天的課就上到這裡了。我們下節課再見。