Python基礎—流程控制
一、Python流程控制
計算機程序在解決某個具體問題時,包括三種情形,即順序執行所有的語句、選擇執行部分的語句和循環執行部分語句,這正好對應著程序設計中的三種程序執行結構流程:順序結構、選擇結構和循環結構。
事實證明,任何一個能用計算機解決的問題,只要應用這三種基本結構來寫出的程序都能解決。Python語言當然也具有這三種基本結構。
順序結構最簡單,就是按著寫的程序語句一條條按順序執行,這裏不再贅述,今天主要說明選擇結構和循環結構。
二、在說明流程控制之前,有必要補充說明下Python的縮進規則
Python的一大特色,強制縮進,目的是為了讓程序知道,每段代碼依賴哪個條件,如果不通過縮進來區分,程序怎麽會知道,當你的條件成立後,去執行哪些代碼呢?
在其它的語言裏,大多通過{}
來確定代碼塊,比如C,C++,Java,Javascript都是這樣。但Python比較獨樹一幟,依靠強制縮進來區分代碼塊,這也是Python簡潔的地方,所以我們要多加註意。
Python的縮進有以下幾個原則:
- 頂級代碼必須頂行寫,即如果一行代碼本身不依賴於任何條件,那它必須不能進行任何縮進
- 同一級別的代碼,縮進必須一致
- 官方建議縮進用4個空格
三、選擇結構
Python中常見的選擇結構主要是if...else語句,包括三種,分別是單分支,雙分支和多分支。
1、單分支
結構:
if 條件:
滿足條件後執行的代碼
例如:
score = int(input(‘你的分數:‘))
if score > 60:
print(‘合格‘)
2、雙分支
結構:
if 條件:
滿足條件後執行的代碼
else:
不滿足條件後執行的代碼
例如:
score = int(input(‘你的分數:‘))
if score > 60:
print(‘合格‘)
else:
print(‘不合格‘)
3、多分支
結構:
if 條件:
滿足條件後執行的代碼
elif:
上面條件不滿足後執行的代碼
elif:
上面條件不滿足後執行的代碼
else:
上述所有條件都不滿足就走這裏
例如:
score = float(input("請輸入你的分數:"))
if score > 100:
print("你輸入的分數不在0到100的範圍內。")
elif score>=90 and score<=100:
print("你的等級是:A")
elif score>=80 and score<=89:
print("你的等級是:B")
elif score>=60 and score<=79:
print("你的等級是:C")
elif score>=40 and score<=59:
print("你的等級是:D")
elif score>=0 and score<=39:
print("你的等級是:E")
else:
print("你輸入的分數不在0到100的範圍內。")
四、循環結構
Python中常見的選擇結構主要是for循環和while循環兩大類。
1、for循環
Python語言中的for語句與其他高級程序設計語言有很大的不同,其他高級語言for語句要用循環控制變量 來控制循環。Python中for語句是通過循環遍歷某一序列對象(字符串、列表、元組等)來構建循環,循環結束的條件就是對象被遍歷完成。
結構:
for <循環變量> in <循環對象>: <語句1> else: <語句2> 註意:else語句中的語句2只有循環正常退出(遍歷完循環對象中所有的值)時執行。 例如:range(5)#是列表range = [0,1,2,3,4]的省寫,python3的優化,默認從0開始
for i in range(5):
print(i)
print("循環結束!")
for語句的循環對象可以是列表、元組以及字符串,可以通過range()函數產生一個叠代值,以完成計數循環。range( start, stop , step),step表示步長。
for語句使用range()函數可以構建基於已知循環次數的循環程序,也可以以range()生成的數字作為索引來訪問列表、元組、字符串中的值。
需要註意的是,range() 函數返回的對象表現為它是一個列表,但事實上它並不是,range()函數並不是在調用時一次生成整個序列,而是遍歷一次才產生一個值,以減少內存的占用,其本質是一個叠代器,當我們到叠代器再細講,這裏先挖個“坑”。
例如:
for i in range(1,10,2): #循環從1開始,到10結束(不包括10),每隔2輸出一個
print(i)
print("間隔輸出結束!")
2、while循環
for語句以遍歷對象的方式構造循環,有時卻需要構造一種類似無限循環的程序控制結構或某種不確定運行次數的循環,就需要使用while語句。
結構1:
while<條件>: <語句1> 註意:與for循環不同的是,while語句只有在測試條件為假時才會停止。 例如:#打印0到100間的偶數
count = 0
while count<=100:
print("Loop:",count)
count+=2
結構2(Python獨有):
while<條件>: <語句1> else: <語句2> 註意:while 後面的else 作用是指,當while 循環正常執行完,中間沒有被break 中止的話,就會執行else後面的語句。 例如:count = 0
while count <= 5 :
count += 1
print("Loop",count)
else:
print("循環正常執行完啦")
結構3(死循環):
while True:
<語句>
註意:while 是只要後邊條件成立(也就是條件結果為真)就一直執行。
例如:
count = 0
while True: #True本身就是真呀
print("你是風兒我是沙,纏纏綿綿到天涯...",count)
# 友情提示,運行需謹慎
五、循環中止語句
如果在循環的過程中,因為某些原因,你不想繼續循環了,怎麽把它中止掉呢?這就用到break 或 continue 語句。
break 和continue的作用和區別:
- break用於完全結束一個循環,跳出循環體執行循環後面的語句。
- continue和break有點類似,區別在於continue只是終止本次循環,接著還執行後面的循環,break則完全終止循環。
例如:break
count = 0
while count <= 100 : #只要count<=100就不斷執行下面的代碼
print("loop ", count)
if count == 5:
break
count +=1 #每執行一次,就把count+1,要不然就變成死循環啦,因為count一直是0
再看例如:continue
count = 0
while count <= 100 :
count += 1
if count > 5 and count < 95: #只要count在6-94之間,就不走下面的print語句,直接進入下一次loop
continue
print("loop ", count)
六、 選擇和循環結構的嵌套使用
小實例:猜年齡遊戲
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# write by congcong
count = 0
age = 21
while count <= 3 :
Age = int(input("輸入你猜的年齡:"))
if age == Age:
print("You have guessed right!")
break
elif Age > age:
print("Guess smaller!")
else:
print("Guess bigger!")
count += 1
if count == 3:
print("你是否還想玩?(y or n)")
option = input("你的選擇:")
if option == "y" and option == "Y":
count = 0
else:
break
print("--------End----------")
Python基礎—流程控制