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!")