python迴圈語句

來源:互聯網
上載者:User

標籤:對象   字典   語言   登入   可迭代對象   判斷語句   +=   注意   sum   

python中的迴圈

python中的 迴圈語句有兩種 for...in迴圈 和 while迴圈。迴圈控制語句,和其他的語言類似,也有break和continue。與其他語言不同的地方是for...in迴圈和while迴圈,後面可以有else語句,具體下面會依次介紹~

迴圈語句的控制結構圖如下:

for in 迴圈

for in 迴圈的文法如下:

for <variable> in <sequence>:    <statements>

其中<sequence>可以是一個字串或者也可以是一個列表 等...

for i in ‘hello‘:                  # 遍曆字串    print(i)輸出結果:hello######for i in [‘a‘, ‘b‘, ‘c‘, ‘d‘]:      # 遍曆列表    print(i)輸出結果:abcd######d = {‘a‘: 1, ‘b‘: 2, ‘c‘: 3} for k, v in d.items():         # 遍曆字典,可同時迭代key和value    print(k, v)輸出結果:a 1b 2c 3

這些可以直接被迭代的對象 統稱為可迭代對象:Iterable(collections模組的Iterable類型),只要是Iterable對象就可以作用於for迴圈。可以使用 isinstance() 判斷一個對象是否是 Iterable 對象,樣本如下:

lst = (1, 2, 3)                                 # 元群組類型flag = isinstance(lst, Iterable)print(flag)輸出結果:True                                             # 元組為可迭代對象

如下兩種資料類型可以總用於for迴圈中:
1)集合資料類型,如:list、tuple、dict、set、str...
2)產生器(generator)和帶yield的generator function

range()函數

range()函數為python內建函數,能夠產生數列。

hello_range = range(3)print(isinstance(hello_range, Iterable))            for i in hello_range:       # 迴圈遍曆 數列    print(i)輸出結果:True                              #  range(3) 所產生的對象為 可迭代對象012

使用range指定數列的區間:

>>> for i in range(2,5):...     print(i)...234

除了指定區間,還可以指定步長:

>>> for i in range(2, 10, 3):...     print(i)...258

range()函數除了可以作用於for迴圈中,還可以用於建立list或者tuple:

hello_list = list(range(10))           # 產生 listprint(hello_list)hello_tuple = tuple(range(10))    # 產生 tupleprint(hello_tuple)
for...in 迴圈中的 else 語句

for...in 後面還可以有 else 語句,文法如下:

for <variable> in <sequence>:    <statements>else:    <statements>

else 中的語句,會在 for 迴圈結束之後執行:

>>> for i in range(5):...     print(i)... else:...     print(‘end...‘)...01234end...

Tip:若 for 迴圈被 break 終止,則 else 中的語句不會被執行,下面會介紹~

while迴圈

python中while迴圈的文法如下:

while <condition>:    <statements>

條件滿足,則一直迴圈,知道條件不滿足,退出迴圈~

樣本如下,求1 ... 100 的總和:

sum = 0n = 1while n <= 100:    sum += n    n += 1print(sum)                # 輸出結果:5050
while 迴圈中的 else 語句

類似於 for...in 迴圈,while 迴圈後面也可以有 else 語句,文法如下:

while <condition>:    <statements>else:    <statements>

當 while 後面的判斷語句傳回值為 false,則迴圈終止,然後執行 else 中的語句。同 for...in 迴圈一樣,若迴圈被 break 終止,則不會執行 else 中的語句。

sum = 0n = 1while n <= 100:    sum += n    n += 1else:    print(‘end...loop‘)print(sum)輸出結果:end...loop5050
無限迴圈

可以使 while 後面的判斷語句一直返回為 True,這樣迴圈將不會被終止,一直執行迴圈體中的語句:

while True:    username = input(‘請輸入使用者名稱:‘)    print(‘welcome %s‘ % username)輸出結果:請輸入使用者名稱:Obamawelcome Obama請輸入使用者名稱:Trumpwelcome Trump請輸入使用者名稱:............

例如 Linux 終端使用者的登入,若使用者輸入的使用者名稱和密碼不正確,則會一直要求使用者重新輸入,直到輸入正確為止~
簡單類比下:

username = ‘baby‘passwd = ‘123456‘flag = Truewhile flag:    login_username = input(‘請輸入使用者名稱:‘)    login_passwd = input(‘請輸入密碼:‘)    if login_username == username and login_passwd == passwd:        flag = Falseelse:    print(‘Welcome %s‘ % username)輸出結果:請輸入使用者名稱:Obama請輸入密碼:abc請輸入使用者名稱:Trump請輸入密碼:123請輸入使用者名稱:baby請輸入密碼:123456Welcome baby
break和continue語句

在迴圈語句中還可以使用 break ,contiune 來控制迴圈流程。

continue語句

continue 用於略過本次迴圈中剩下的語句,直接進入下一次迴圈,樣本如下:

# 計算1...100的奇數和sum =0count = 0while count < 100:    count += 1    if count % 2 != 1:              # 若不是奇數,直接進入下一次迴圈        continue    sum += countprint(‘sum=%s‘ % sum)輸出結果:sum=2500
break語句

break 用於跳出最近的一個迴圈,樣本如下:

sum =0count = 1while count <= 100:    if count == 51:        break    sum += count    count += 1print(‘sum=%s‘ % sum)輸出結果:sum=1275

當count為51時,終止迴圈,則sum計算的是 1...50 的總和

Tip:break跳出迴圈,僅跳出最近的一個迴圈,若迴圈只有一層,執行break之後,迴圈就結束了;若迴圈有2層,則外側的迴圈還會繼續

lst_1 = [‘a......‘, ‘b......‘, ‘c......‘]lst_2 = [1, 2, 3]for i in lst_1:    print(i)    for j in lst_2:        print(j)輸出結果:a......123b......123c......123

如上所示,這裡有兩層迴圈,現在,當內側迴圈至2時,使用break終止迴圈(見下面的樣本),可以看到,內側迴圈在輸出lst_2中的2之後終止,但是外側的迴圈還在繼續:

lst_1 = [‘a...‘, ‘b...‘, ‘c...‘]lst_2 = [1, 2, 3]for i in lst_1:    print(i)    for j in lst_2:        print(j)        if j == 2:            break輸出結果:a...12b...12c...12

break還有一個注意點,就是當迴圈被break終止時,不會執行迴圈後面的 else 語句

lst_1 = [‘a...‘, ‘b...‘, ‘c...‘]for i in lst_1:    print(i)else:    print(‘end...‘)輸出結果:a...b...c...end...        # 正常執行else中的內容lst_1 = [‘a...‘, ‘b...‘, ‘c...‘]for i in lst_1:    print(i)    if lst_1.index(i) == 1:      # 當迴圈值lst_1下標為1的元素時,終止迴圈        breakelse:    print(‘end...‘)輸出結果:                       # 沒有 c... 和 end... 輸出a...b...

while 迴圈也一樣,這裡就直接使用上面的例子:

sum = 0count = 1while count <= 100:    if count == 51:        break    sum += count    count += 1else:    print(‘end loop...‘)print(‘sum=%s‘ % sum)輸出結果:sum=1275                  # else 中的 end loop... 並沒有輸出

.................^_^

python迴圈語句

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.