Python學習day06-Python基礎(4)流程控制之while和for循環

Python學習day06-流程控制之while和for循環

while循環

1. 語法

  • 循環便是一個重複的過程,讓計算機重複性的作一件事情,而while循環就是讓計算機重複作一件事情的一種方式,只要條件知足,就不斷循環,條件不知足時退出循環,因此又稱爲條件循環。

2. while+break,while+continue

  • 在循環中,break語句能夠提早退出循環,並且不會自動運行下一次循環,而continue則是跳出這次循環,繼續進行下一次循環。具體示例以下代碼:node

     
     
     
    xxxxxxxxxx
    8
     
     
     
     
    1
    2
    n = 1
    3
    while n <= 10 :
    4
    print(n,end = '')
    5
    n = n+1
    6
    if n == 5:
    7
    break
    8
    print('END')
     
     
    • 這段代碼的執行結果就是python

      1234ENDweb

      顯然就是到n == 5的時候遇到了break,會跳出循環,並不在執行。windows

    再來看一個continue的例子app

     
     
     
    xxxxxxxxxx
    7
     
     
     
     
    1
    n = 1
    2
    while n <= 10 :
    3
    n = n+1
    4
    if n == 5 :
    5
    continue
    6
    print(n)
    7
    print('END')
     
     
    • 上面這段代碼的運行結果就是less

      23467891011ENDide

      顯然,沒有5,即n = 5的時候執行了continue,跳過了下面的print(n),因此沒打印5,可是會繼續執行循環,因此5以後的值仍是會打印出來。因此continue的做用便是提早結束本輪循環,繼續執行下一輪循環。svg

3. while的嵌套

  • 一般用於多層判斷的一些系統,好比銀行ATM機取錢存錢的一些命令,內層while嵌套能夠實現其退出循環並退出系統的目的。

for循環

1. 語法

  • for循環和while循環的一個比較大的不一樣就是while的循環次數須要本身控制,可是for的循環次數是按照索引取值來判斷的。因此while有可能會進入死循環,而for不會,因此用for來寫循環代碼更穩定。函數

  • 可是for也有不足,while循環內能夠加世間萬物,即全部的數據,但凡是有布爾值的,均可以放在while循環裏,可是for只能對容器內的數據類型循環,即字符串,列表和字典,而且能夠迭代,別的數據類型是不能做爲for的循環條件的。

    例程以下:

     
     
     
    xxxxxxxxxx
    2
     
     
     
     
    1
    for i in range(1, 10):  # range顧頭不顧尾
    2
        print(i)
     
     
    • 其實上述代碼中的i能夠不使用,其只是在循環中其一個循環標籤的做用,即使輸出中沒有i也不會影響循環

2. for+break,for+continue

  • 用法相似於while,能夠參考上文

3. 小實例,for循環實現loading

  • 須要注意的是,該實例只能在Jupyter中實現,pycharm因爲其優化的功能並不能看出loading後面省略號緩緩出現這一效果,而是在延遲事後一次性出現。

    例程以下:

     
     
     
    xxxxxxxxxx
    6
     
     
     
     
    1
    import time
    2
    3
    print('Loading', end='')
    4
    for i in range(6):
    5
        print(".", end='')
    6
        time.sleep(0.2)
     
     
    • 上述代碼中time.sleep即爲time模塊自帶的延時函數,後面爲延時時間,往後在不一樣的場景中能夠用獲得。

一個很是有趣的\r

  • 在咱們平常碼代碼的過程當中,print用的再多不過了,但print裏的一些參數相信你們有的仍是不甚瞭解,今天要說的是\r這樣一個小參數

     
     
     
    xxxxxxxxxx
    1
     
     
     
     
    1
    print('\rXu')
     
     

    上述代碼的輸出結果就是Xu,沒有任何問題,那麼他的特殊性在哪呢?

    再來一段代碼

     
     
     
    x
     
     
     
     
    1
    print('\rXu')
    2
    print('\rXu')
    3
    print('\rXu')
    4
    print('\rXu')
     
     

    猜一下結果是什麼?沒錯,結果就是

    Xu

  • Xu

  • Xu

  • Xu

    仍是沒有就職何特殊的,莫不成筆者在耍大家?

    不不不,再看一段

     
     
     
    x
     
     
     
     
    1
    print('\rXu',end = '')
    2
    print('\rXu',end = '')
    3
    print('\rXu',end = '')
    4
    print('\rXu',end = '')
     
     

    咱們都知道end = ‘’的定義方法是讓該行輸出以後不換行,因此,上面這段程序結果是什麼?

    Xu

    沒錯,你沒有看錯,只有一個Xu,爲何呢?

    結果就是\r加在print當中,原位打印的意思,也就是覆蓋上一次打印的位置,並且僅限當前行。因此這就是爲何在有換行的狀況下\r並無什麼效果。

    咱們能夠來看下print的源碼

     
     
     
    xxxxxxxxxx
    1
     
     
     
     
    1
    def print(self, *args, sep=' ', end='\n', file=None):
     
     

    上述代碼咱們不難理解,若是沒有end = ‘’,那麼他就是\n,也就是換行的意思。

    哇,恍然大明白。

Tips:

循環是讓計算機作重複任務的有效的方法。

break語句能夠在循環過程當中直接退出循環,而continue語句能夠提早結束本輪循環,並直接開始下一輪循環。這兩個語句一般都必須配合if語句或者while語句使用。

要特別注意,不要濫用breakcontinue語句。breakcontinue會形成代碼執行邏輯分叉過多,容易出錯。大多數循環並不須要用到breakcontinue語句,上面的兩個例子,均可以經過改寫循環條件或者修改循環邏輯,去掉breakcontinue語句。

有些時候,若是代碼寫得有問題,會讓程序陷入「死循環」,也就是永遠循環下去。這時能夠用Ctrl+C退出程序,或者強制結束Python進程。

相關文章
相關標籤/搜索