python-day1-05-循環

  1. 循環就是然計算機重複的幫咱們作一件事情,人都討厭作重複枯燥無味的事情,像推磨,人以爲枯燥乏味,而後就有了驢推磨,一圈一圈的循環,人一圈一圈的推豈不累死,因此計算機也同樣,當有重複的工做,跟計算機也同樣,當有重複的工做,跟計算機下命令,你重複作就行了,那麼python裏用來下命令的這個語法就只有 while和 for兩個。
  2. while循環
    1. 顧名思義,當。。。。的時候,就是說當知足條件的時候,我運行while下面的代碼,反之,當不知足的時候,咱們就不運行,看到這裏是否是感受和上面的 if判斷是同樣的?對,沒錯是同樣的,可是while的區別在於循環,意思就是我運行完while下面的代碼後,又跑到while開始這裏來了,繼續判斷,若是爲真運行下面的代碼,爲假則結束,而後運行完又回到判斷條件這裏來了,這是你也發現了,只要條件一直爲真,那麼他將快馬加鞭的運行下去,就跟永動機同樣,這就是所謂的死循環,因此咱們用來判斷的這個條件,不能是一個常量,判斷條件須要實時變化的,否則就是一個死循環,永遠也不會結束,看下僞代碼:
    2. while 我是菜鳥:
          加最辛苦的班,領最低的工資。
    3. 若是我不努力學習、進取,一直是菜鳥,我就一直循環這個狀態,這就是死循環。那麼如何結束掉這個死循環呢,固然是努力、進取提高本身,改變這個判斷條件的值,不就結束掉了麼,因此咱們的這個while條件須要是一個變化的值才行,否則就一直運行下去了,在python裏,經常使用的是用一個計數器來計數,當計數達到預期的值就終止循環,看下代碼。
    4. 1 i = 0         #定義一個變量,用來判斷
      2 while i<=10:  #判斷變量i的值是否<=10,知足條件往下走
      3     i +=1     #計數,每次循環後i自增1
      4     print(i)  #打印i,這裏會打印1-11
      5 else:
      6     print('over')  #這裏會正產結束,因此打印1-11後,會打印over

       

    5. while循環裏的break和 continue:
      • break即破壞掉這個循環,強制結束,while循環裏只要遇到break就結束,這個時候就比如驢生病了,再也不循環拉磨,直接結束;
      • 1 i = 0
        2 while i<=10:
        3     i+=1
        4     if i == 5:   #當i的值等於5時,執行下面的break
        5         break    #while遇到break時,就結束掉整個循環了,因此這段代碼的執行結果是1-4
        6     print(i)
        7 else:            #當上面的while循環正常結束,運行else
        8     print('over')#這裏非正常結束,因此打印1-4,不打印over

         

      • continue就是結束掉本次循環,繼續下一個循環,就比如磨壞了,要從新修一下,這一圈沒跑完就不跑了,而後回到開始拉磨的起點,從新拉磨。代碼以下:
      • 1 i = 0
        2 while i <=10:
        3     i +=1
        4     if i == 5:    #當i的值等於5時,執行下面的continue語句
        5         continue  #當while趕上continue時,就結束掉本次的循環,繼續下一個循環,因此這段代碼執行的結果是1-4,6-11
        6     print(i)
        7 else:             #當上面的while循環正常結束,運行else
        8     print('over') #這裏會正常結束,因此打印1-4,6-11後,會打印over

         

  3. for循環
    1. for 的翻譯是"爲了",python這裏就是說爲了什麼而循環,好比後面跟一個列表,爲了列表裏面的元素循環,循環取列表裏的元素,就比如後面跟的是本身的孩子,確定不能厚此薄彼,所有都要照顧到。
    2. for循環後面必須接一個可迭代的對象,什麼是可迭代的對象呢?先把能夠它想象成糖葫蘆,之後天然會理解,這個迭代的對象就是一串糖葫蘆,能夠每次取一顆下來,這就是可迭代。for循環就是每次取一顆糖葫蘆出來,直到取完爲止,也就是說你有幾個糖葫蘆就循環幾回
    3. 這樣理解應該比較好理解,那麼python裏有哪些可迭代的對象呢?用的比較多的就只有這幾種:
      1. 字符串:每次取一個字符
      2. 列表:每次取一個元素
      3. 元祖:每次取一個元素
      4. 集合:每次取一個元素
      5. 字典:每次取一個字典的key()
      6. 不可迭代:數字,小數
  4. 用for循環,比較while而言更方便,之後基本都會用for循環,由於不像while需用設置計算器,for永遠也不用擔憂會進入死循環,它迭代完後面的可迭代對象裏的值以後,就結束了,不存在死循環,因此在這點上比while好用。其餘和上面的while語法差很少,代碼以下
    • break語句
    • 1 for i in ['a','b','c']:
      2     if i =='b':     #當i的值等於'b'時,執行下面的break
      3         break       #for遇到break時,就結束掉整個循環了,因此這段代碼的運行結果爲'a'
      4     print(i)
      5 else:               #當上面for循環正常結束時,運行else
      6     print('over')   #這裏非正常結束,在打印'a'後,不打印over

       

    • continue語句
    • 1 for i in ['a','b','c']:
      2     if i =='b':     #當i的值等於'b'時,執行下面的continue
      3         continue    #當for循環遇到continue時,當前循環結束,執行下一個循環,因此這段代碼的運行結果爲'a''c'
      4     print(i)
      5 else:               #當上面for循環正常結束時,運行else
      6     print('over')   #這裏正常結束,在打印'a''c'後,打印over

       

  5. for循環記住一下幾點,在後面再細講
    • 循環list實質是根據下標循環裏面的元素
    • 循環list的時候,切記不要刪除list元素,否則會致使取值錯亂,解決方法,用copy方法設置一個新list
      •  例子
        • word = ['cat','window','defenestrate']
          for w in word[:]:
              if len(w) > 6:
                  word.insert(0,w)
          
          print(word)
          
          結果爲:
          ['defenestrate', 'cat', 'window', 'defenestrate']
        • 在迭代過程當中修改迭代序列不安全(只有在使用鏈表這樣的可變序列時纔會有這樣的狀況)。若是你想要修改你迭代的序列(例如,複製選擇項),你能夠迭代它的複本。python

        • 可是若是沒有copy序列,即for w in word:則會無限制的執行插入操做
    • 只要能經過下標取值的對象,都能用for循環
    • 循環文件對象的時候,實質是循環文件裏的行內容
    • 循環字典的時候,實質是循環key
  6. 課後練習
    1. 綜合上面的輸入、條件判斷和循環等知識點,來寫個猜數字的小遊戲,遊戲規則:產生一個1-100之間的隨機數字,接收用戶輸入,判斷輸入和隨機的值,相等打印猜對了,遊戲結束;輸入值大於隨機的值,提示猜大了,繼續;輸入值小於於隨機的值,提示猜小了,繼續。產生隨機數,使用模塊random,方法:num=random.randint(1,101),num就是一個隨機數。
      1.  1 import random
         2 random = random.randint(1,101)
         3 print(random)
         4 i = 0
         5 while i <random:
         6     i+=1
         7 
         8     input_num = input('請輸入數字')
         9     input_num = float(input_num)
        10 
        11     if input_num ==random:
        12         print("猜對了")
        13         break
        14     elif input_num>random:
        15         print("猜大了")
        16     else:
        17         print("猜小了")
          
相關文章
相關標籤/搜索