循環知識 下2

      以前咱們提到,計算機利用數據有三種方式:1.直接使用數據,2.計算和加工數據,3.用數據作判斷。編程

除了while循環,我以前學過的if...elif...else語句,也涉及到【利用數據用作邏輯判斷】。當邏輯判斷經過纔會繼續執行:markdown

固然,if和while有個顯著的區別。那就是if語句只會執行一次,而while是循環語句,只要條件判斷爲真,就一直循環執行。函數

這個「判斷」的過程,在計算機的世界裏是如何發生的呢?spa

計算機的邏輯判斷,只有兩種結果,就是True(英文意思是「真」)和False(英文意思是「假」),沒有灰色地帶。這個計算真假的過程,叫作【布爾運算】。code

TrueFalse,也就叫作【布爾值】。

咱們舉個例子,請你運行如下代碼,看看結果是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
print('如下是and運算')
if a==1 and b==1:    # 【b其實是-1】
    print('True')                    
else:
    print('False')                由於 b == -1 不會經過 if   and (and要兩個條件都知足,才能判斷爲True)判斷語句 執行 else 輸出 False (假)
 
 
print('如下是or運算')
if a==1 or b==1:  # 【b其實是-1】
    print('True')
else:
    print('False')                                                        雖然 b == -1 可是  if or (or只要兩個條件知足一個,就能判斷爲True)a==1 爲真 ,因此會執行 if 語句輸出 True
 
【not】運算。這個運算很簡單,表示翻轉的意思。not True就等於Falsenot False就等於True
 

 

最後,咱們講一下【in】和【not in】兩種運算。

【in】的意思是「判斷一個元素是否在一堆數據之中」,【not in】反之。這個超簡單的。

list = [1,2,3,4,5]
a = 1
# 作一次布爾運算,判斷「a是否在列表list之中」
print(bool(a in list))
print(bool(a not in list))
由於a=1 是在list是在列表中因此第一行print 打印出爲True 真
not in 反之 打印 False 假
 
若是涉及到的數據集合是字典的話,【in】和【not in】就能夠用來判斷字典中是否存在某個【鍵】
dict = {'法國':'巴黎','日本':'東京','中國':'北京'}
a = '法國'

print(bool(a in dict))
 
 
break語句。break的意思是「打破」,是用來結束循環的,通常寫做if...break
# break語句搭配for循環
for...in...:
    ...
    if ...:
        break

# break語句搭配while循環
while...(條件):
    ...
    if ...:
        break
 
在這裏,if...break的意思是若是知足了某一個條件,就提早結束循環。記住,這個只能在循環內部使用。
【注】:Tab鍵和空格鍵不能同時混用。
for i in range(5):
  print('明日復明日')
  if i==3:  # 當i等於3的時候觸發
    break # 結束循環
 
 
while True咱們在上面見過了,這個條件恆爲真,就會開啓無限循環。而while True常和break語句搭配使用,你也能夠學着使用這種寫法。你也能夠用while 1 或其餘形式開啓一個無限循環
 
當沒有輸入'來了'兩個字時 一直循環 
while True:    
    print('上供一對童男童女')
    t = input('孫悟空來了嗎')
    if t == '來了':
        break
print('孫悟空制服了鯉魚精,陳家莊不再用上供童男童女了')
 
 
 
  練習題  提示:① 用while True開啓無限循環。② 在循環內部用input() 函數獲取用戶的數據。 ③ 使用if...break,若是變量p == '小龍女',那就break結束循環。不然又開始循環。④ 結束循環後,打印--經過啦~
while True:
   
    p=input('請輸入密碼:')
    if p=='小龍女':
     break
print('經過了!')
 
continue語句

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('你觸發了break語句,致使else語句不會生效。')   
   break
else:
    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了三次了')

相關文章
相關標籤/搜索