Python-流程控制-while循環-for循環

Python-流程控制-while循環-for循環

寫重複代碼 是可恥的行爲

程序在一般情況下是按順序執行的,編程語言提供了各種控制結構,允許更復雜的執行路徑。
循環(loop)用於解決重附代碼的問題

1.循環類型

1.1.循環分類

1)根據循環次數分類
有限循環(次數限制)
無限循環(死循環)
標誌位flag

2)根據語法可以分爲以下類型

Python提供了for循環和while循環(在Python中沒有do..while循環):
while 循環 在給定的判斷條件爲 true 時執行循環體,否則退出循環體。
for 循環 重複執行語句
嵌套循環 你可以在while循環體中嵌套for循環

1.2.循環控制語句

循環控制語句可以更改語句執行的順序。Python支持以下循環控制語句:
break結束全部循環,跳出整個循環
continue結束本次循環,進入下次循環
shell腳本里用break2可以跳出2層循環,但python不可以,這不是好語法,會造成語義混亂

2.while循環

參考文章:
http://www.runoob.com/python/python-while-loop.html

2.1.while循環語法:

while 條件:
    執行代碼...
  • 實例:循環打印0-100
count = 0
while count <= 100:
    print("loop ",count)
    count += 1
print("-------end-------")

while True:     # 當這個條件成立就執行下面的代碼
    print("count:",count)
    count = count +1    # count +=1 <=> count = count +1
    if count == 100:
        break
  • 實例:優雅退出
while True:
    if count ==3;
        break       # 結束退出
# 優化代碼
while count <3:
  • 實例:打印100以內的偶數
count = 0
while count <= 100:
    if count % 2 == 0:		# 除以2餘數爲0的數
        print("loop ",count)
    count += 1
print("-------end-------")
  • 實例:第50次不打印,第60-80打印對應值的平方
count = 0
while count <= 100:
    if count == 50:
        pass 		# 過
    elif count >= 60 and count <= 80:
        print(count*count)
    else:
        print(count)
    count += 1
print("-------end-------")

2.2.死循環(永遠運行的程序)

  • 語法:
while True:
    執行代碼...
  • 實例1:死循環
count = 0
while True:
    print("forever  ",count)
    count += 1

2.3.循環終止語句

break 完全終止循環
continue 終止本次循環,跳過本次循環
exit() 任意位置退出程序

  • 實例1:break退出循環
count = 0
while count <= 100:
    print("loop ",count)
    if count == 5:
        break
    count += 1
print("-----out of while loop-----")
  • 實例2:玩猜年齡3次就退出了
age = 26
count = 0
while count < 3:
    age_guess = int(input("猜猜年齡:"))
    if age_guess == age:
        print("猜對了!")
        break
    elif age_guess < age:
        print("猜大點")
    else:
        print("猜小點")
    count += 1
  • 實例3:玩猜年齡3次後問是否還要玩
age = 26
count = 0
while count < 3:
    age_guess = int(input("猜猜年齡:"))
    if age_guess == age:
        print("猜對了!")
        break
    elif age_guess < age:
        print("猜大點")
    else:
        print("猜小點")
    count += 1
    if count == 3:
        again = input("還想玩嗎[y]:")
        if again == 'y':
            count = 0
        else:
            exit('byebye')

注意:以上的無限循環你可以使用 CTRL+C 來中斷循環。

2.4.python中while的特殊語法

while...else語句

while … else 在循環條件爲 false 時(也就是訓完執行完成)執行 else 語句塊
while循環正常執行完,中間沒有被 break 中止,就執行else語句
推論:沒有看到else後面的語句就說明循環被中斷過
else 作用:可以讓你知道你的程序中間是否被break過

  • 實例1:while...else正常執行完
count = 0
while count <= 5:
    count += 1
    print("loop ",count)
else:
    print("循環正常執行完了")
print("-------end-------")

返回結果如下:
----------------------
loop 1
loop 2
loop 3
loop 4
loop 5
loop 6
循環正常執行完了
-------end-------
  • 實例2:while...else被break打斷
count = 0
while count <= 5:
    count += 1
    if count == 3:
        print('終止循環')
        break
    else:
        print("loop ", count)
else:
    print("循環正常執行完了")
print("-------end-------")

返回結果如下:
----------------------
loop  1
loop  2
終止循環
-------end-------

不用非要從語義理解記憶,將while...else作爲一組語句,正常語法執行完上面的while循環就執行下面的else語句,while循環被break終止就不執行下面的語句

2.5.簡單語句組

類似 if 語句的語法,如果while循環體中只有一條語句,可以將該語句與while寫在同一行中, 如下所示:

#!/usr/bin/python
flag = 1
while (flag): print 'Given flag is really true!'
print "Good bye!"

3.for循環

Python for循環可以遍歷任何序列的項目,如一個列表或者一個字符串。
參考:http://www.runoob.com/python/python-for-loop.html

3.1.for循環語法

for iterating_var in sequence:
   statements(s)

3.2.實例演示

  • 實例1:打印0到10之間的奇數
## 方法1:for循環加if判斷,比較複雜
for i in range(10):
    if i % 2 == 1:
        print(i)

## 方法2:步長,簡單高效
for i in range(0,10,1):
    print("loop:",i)
  • 實例2:打印0到10之間的偶數,隔2個打印:02468
for i in range(0,10,2):
    print("loop:",i)
  • 實例3:從0打印到10之間的,隔3個打印:0369
for i in range(0,10,3):
    print("loop:",i)
  • 實例4:猜數字,只能猜3次,猜對就退出,猜不對就退出
num = 26
for i in range(3):
    guess_num = int(input("Please input your num:"))
    if guess_num == num:
        print("yes,you got it!")
        break
    elif guess_num > num:
        print("please guess smaller...")
    else:
        print("please guess bigger...")
else:           
    print("You have tried too many times")

只要上面的for循環正常執行完畢,沒被打斷,就會執行else的語句
如果遇到break被打斷則不走else的,因爲break下面的代碼不執行
遇到continue後else的代碼是會執行的

  • 練習:寫一個登錄程序,連續輸錯3次用戶名或密碼則退出。
_user = input("username:")
_passwd = input("password:")
for i in range(3):
    i_user = input("input username:")
    i_passwd = input("input password:")
    if i_user == _user and i_passwd == _passwd:
        print("Welcome login %s" %_user)
        break
    else:
        print("Invalid username or passord!")

10.參考地址

http://www.runoob.com/python/python-loops.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章