以前咱們提到,計算機利用數據有三種方式:1.直接使用數據,2.計算和加工數據,3.用數據作判斷。編程
除了while循環,我以前學過的if...elif...else
語句,也涉及到【利用數據用作邏輯判斷】。當邏輯判斷經過纔會繼續執行:markdown
固然,if和while有個顯著的區別。那就是if語句只會執行一次,而while是循環語句,只要條件判斷爲真,就一直循環執行。函數
這個「判斷」的過程,在計算機的世界裏是如何發生的呢?spa
計算機的邏輯判斷,只有兩種結果,就是True
(英文意思是「真」)和False
(英文意思是「假」),沒有灰色地帶。這個計算真假的過程,叫作【布爾運算】。code
True
和
False
,也就叫作【布爾值】。
咱們舉個例子,請你運行如下代碼,看看結果是True仍是False:遊戲
print(3<5) True 真
print(3>5) False 假字符串
print('長安'=='長安') True 真input
print('長安'!='金陵') True 真for循環
print()
括號內的計算其實就是【布爾運算】。終端上出現的True和False咱們稱爲【布爾值】。class
print()
括號內的計算其實就是【布爾運算】。終端上出現的True和False咱們稱爲【布爾值】。
第1行和第2行代碼很簡單啦。咱們看後面兩行:兩個字符串'長安'相等,結果正確,因此打印爲True。而字符串'長安'和字符串'金陵'作比較,結果不相等,!=
表明不等號,結果正確,打印爲True。
只有當條件判斷爲True時,if和while後面的子句纔會執行下去。
好,如今咱們來體驗一下上面出現過的這段奇怪的代碼,你會發現它執行後,終端上不顯示任何結果:
while False:
print('while False')
這是由於while循環執行,必需要while後的條件爲「真」,而【布爾值】False自己就是「假」,因此這個循環一次都沒運行就結束了。
同理,3>5
這個條件恆爲「假」,若是把while False
換成while 3>5
,效果會是同樣的——什麼都不會出現。
while 3>5:
print('while False')
這時候可能就有人會問了:「那若是我用while True
或者while 3<5
來作條件,會怎麼樣?」
咱們就來體驗一下。怕你生氣,先劇透:請注意,這段代碼將會無限運行,陷入【死循環】,你須要在鍵盤上按幾回【ctrl+c】來強制結束運行。
while True:
print('while True')
這是由於【布爾值】True直接把條件判斷的結果設置爲真,也就是條件永遠正確。因此代碼會無限循環,必須手動強制退出。
【布爾值】對條件判斷語句有同樣的效果
咱們會發現,只有if True
成功運行,將結果顯示在了屏幕上。固然,if語句不會陷入死循環。
咱們作一個總結:
用數據作邏輯判斷的過程叫【布爾運算】
【布爾運算】會產生【布爾值】
【布爾值】分爲 False判斷 爲假 True判斷爲 真
False與True就像開關同樣,決定if 與while語句是否運行。
咱們可使用bool()
函數來查看一個數據會被判斷爲真仍是假。
print(bool('abc')) 會在終端顯示abc是真是假
and 與 or 區別
a==1 and b==1
的意思是【a=1而且b=1】,要兩個條件都知足,才能判斷爲True,而a==1 or b==1
的意思是【a=1或者b=1】,只要兩個條件知足一個,就能判斷爲True。
布爾值運算 and 條件判斷 兩個條件都爲真時,纔會經過往下執行 只要有一個條件爲假時不會執行程序。
布爾運算 or 條件判斷 兩個條件中有一個值爲真就會經過往下執行。
a = 1
b = -1
if a==1 and b==1: # 【b其實是-1】
print('True')
else:
print('False') 由於 b == -1 不會經過 if and (and要兩個條件都知足,才能判斷爲True)判斷語句 執行 else 輸出 False (假)
if a==1 or b==1: # 【b其實是-1】
print('True')
else:
print('False') 雖然 b == -1 可是 if or (or只要兩個條件知足一個,就能判斷爲True)a==1 爲真 ,因此會執行 if 語句輸出 True
not True
就等於False
,not False
就等於True
最後,咱們講一下【in】和【not in】兩種運算。
【in】的意思是「判斷一個元素是否在一堆數據之中」,【not in】反之。這個超簡單的。
a = 1
print(bool(a in list))
print(bool(a not in list))
a = '法國'
print(bool(a in dict))
if...break
for...in...:
...
if ...:
break
# break語句搭配while循環
while...(條件):
...
if ...:
break
if...break
的意思是若是知足了某一個條件,就提早結束循環。記住,這個只能在循環內部使用。
print('明日復明日')
break # 結束循環
while True
咱們在上面見過了,這個條件恆爲真,就會開啓無限循環。而while True
常和break語句搭配使用,你也能夠學着使用這種寫法。你也能夠用while 1 或其餘形式開啓一個無限循環
print('上供一對童男童女')
t = input('孫悟空來了嗎')
if t == '來了':
break
print('孫悟空制服了鯉魚精,陳家莊不再用上供童男童女了')
p=input('請輸入密碼:')
if p=='小龍女':
break
print('經過了!')
continue的意思是「繼續」。這個子句也是在循環內部使用的。當某個條件被知足的時候,觸發continue語句,將跳過以後的代碼,直接回到循環的開始。
它的寫法是這樣的:
# continue語句搭配for循環
for...in...:
...
if ...:
continue
...
# continue語句搭配while循環
while...(條件):
...
if ...:
continue
...
例題 三個問題,只有連續答對,才能斷定他就是西夏公主的意中人;不然,只要有任何一題錯,都要換人從頭開始回答問題。
事實上,西夏公主曾和她的意中人虛竹邂逅於一個黑暗的冰窖之中,但兩人不知對方姓名,只互稱呼「夢姑」和「夢郎」,兩人也看不清彼此的臉。
所以,西夏公主爲了找到虛竹,才進行招親,並對候選者問出這三個問題
while True:
q1 = input('第一問:你一輩子之中,在什麼地方最是快樂逍遙?')
if q1 != '黑暗的冰窖':
continue
print('答對了,下面是第二問:')
q2 = input('你平生最愛之人,叫什麼名字?')
if q2 != '夢姑':
continue
print('答對了,下面是第三問:')
q3 = input('你最愛的這我的相貌如何?')
if q3 == '不知道':
break
print('都答對了,你是虛竹。')
pass語句
pass語句就很是簡單了,它的英文意思是「跳過」。
a = int(input('請輸入一個整數:'))
if a >= 100:
pass
else:
print('你輸入了一個小於100的數字')
else語句
最後一種else語句,咱們在條件判斷語句見過【else】,其實,else不但能夠和if配合使用,它還能跟for循環和while循環配合使用
for i in range(5):
a = int(input('請輸入0結束循環,你有5次機會:'))
if a == 0:
print('你觸發了break語句,致使else語句不會生效。')
break
else:
print('5次循環你都錯過了,else語句生效了。')
第二種 while
i=0
while i>5:
a = int(input('請輸入0結束循環,你有5次機會:'))
i=i+1
if a == 0:
print('5次循環你都錯過了,else語句生效了。')
咱們一塊兒來完成這個「猜大小遊戲」的編程,個人思路大概是這樣的:
1.一我的在內心想好一個數————這個數字是提早準備好的,能夠設置一個變量來保存這個數字。我就設置個人數字爲24。
2.而後讓另外一我的猜————因此可使用input()函數來接收另外一我的輸入的數字,並用int()轉化爲整數。
3.直到猜對爲止————天知道幾回才能猜對,因此確定須要用到循環,而且因爲不知道要循環幾回,因此適合while循環。
4.若是他猜的數比24小就告訴他「過小了」,若是他猜的數比24大就告訴他「太大了」——這裏一看「若是……就……」的描述,就知道應該用if...else...
寫一個條件判斷。
a=24
while 1:
b=input('你猜多少!')
if int(b)==a:
print('你猜對了!')
break
elif int(b)>a:
print('你猜大了!')
else:
print('你猜大了!')
假如咱們改變一下題目:一我的在內心想好一個數,好比24,而後讓另外一我的猜。若是他猜的數比24小,告訴他「過小了」,若是他猜的數比24大,告訴他「太大了」,這個遊戲只能猜3次,3次都猜不中,就告訴他「失敗了」。
考一下,這時候的解決方法應該是什麼?
a=24
for i in range(3):
b=input('你猜多少!')
if int(b)==a:
print('你猜對了!')
break
elif int(b)>a:
print('你猜大了!')
else:
print('你猜大了!')
else:
print('沒機會i了三次了')