python程式的三種控制結構

不太機靈的春天發表於2020-12-12

程式的三種控制結構

什麼是控制結構?

"""
程式有三種基本結構組成:順序結構、分支結構、迴圈結構。任何程式都是由這三種基本結構組成。
順序結構是程式按照線性順序依次執行的一種執行方式。
分支結構是程式根據條件判斷結果而選擇不同向前執行路徑的一種執行方式。
迴圈結構是程式根據條件判斷結果向後執行的一種執行方式。
"""

程式的分支結構

單分支結構:if

"""
python中分支結構使用if保留字對條件進行判斷,使用方法:
 
 if <條件>:
    <語句塊>

其中,if、:、<語句塊>、前的縮排都是語法的一部分
例如:判斷一個數字的大小

a = 1
b = 2
if a < b:
    print("True")
<條件>可以是一個或者多個條件,多個條件間採用and或or進行邏輯組合。and表示多個條件“與”的關係,or表示多個條件“或”的關係。

例如:判斷使用者輸入數字的特性
a = eval(input("請輸入一個數字:"))
if a % 3 == 0 and a% 5 == 0:
    print("這個數字既能被3整除,也可以被5整除")
print("輸入的數字是:",s)

請輸入一個數字: 10
輸入的數字是:  10

請輸入一個數字:15
這個數字既能被3整除,也可以被5整除
輸入的數字是: 15
"""

二分支結構:if-else

"""
python的二分支結構使用if-else保留字對條件進行判斷,語法格式如下:
 
 if <條件>:
    <語句塊1>
else:
    <語句塊2>

<語句塊1>在if<條件>中滿足即為True時執行,<語句塊2>在if<條件>中不滿足即為False時執行,簡單來說,二分支結構根據條件True或False結果產生兩條路徑。
例如:

a = eval(input("請輸入一個數字:"))
if a % 3 == 0 and a% 5 == 0:
    print("這個數字既能被3整除,也可以被5整除")
else:
    print("這個數字既不能被3整除,也不可以被5整除")
print("輸入的數字是:",s)

請輸入一個數字:15
這個數字既能被3整除,也可以被5整除
輸入的數字是: 15

請輸入一個數字:11
這個數字既不能被3整除,也不可以被5整除
輸入的數字是: 11

"""

三分支結構:if-elif-else

"""
python的三分支結構使用if-elif-else保留字對條件進行判斷,語法格式如下:
 
 if <條件1>:
    <語句塊1>
elif <條件2>:
    <語句塊2>
elif <條件3>:
    <語句塊3>
	.
	.
else:
    <語句塊n>
    多分支結構通常用於判斷同一個條件或者一類條件的多個執行路徑。
	
例如:
a = eval(input("請輸入你的成績:"))
if a > 90:
    print("優秀")
elif a > 80:
    print("良好")
elif a >= 60:
    print("及格")
else:
    print("不及格")
    
請輸入你的成績:100
優秀
請輸入你的成績:85
良好
請輸入你的成績:60
及格
請輸入你的成績:50
不及格
"""

遍歷迴圈:for

python語言中的迴圈結構分為:遍歷迴圈和無限迴圈兩種,遍歷迴圈使用保留字for依次提取遍歷結構各元素進行處理,無限迴圈使用保留字while根據判斷條件執行程式。

在學習for迴圈時我們要理解,什麼是for迴圈,迴圈就是重複做某件事,for迴圈時python提供第二種迴圈機制,為何要有for迴圈,理論上for迴圈能做的事,while迴圈都可以做,之所以要有for迴圈,是因為for迴圈在迴圈取值(遍歷取值)比while迴圈更簡潔。
"""
for 變數名 in 可迭代物件:
可迭代物件可以是:列表、字典、字串、元組、集合

遍歷迴圈:for
遍歷迴圈可以理解為從遍歷結構中逐一提取元素,放在迴圈變數中,對於每個所提取的元素執行一次語句塊。

for <迴圈變數> in <遍歷結構>:
	<語句塊>

例如:
for a in "python":
    print(a)
p
y
t
h
o
n

或者:
for a in range(3):
    print(a)
0
1
2

"""
遍歷結構還有一種擴充套件結構
"""
for <> in <>:
	<語句塊1>
else:
	<語句塊2>
"""
當for迴圈正常執行之後,程式會繼續執行else語句中內容,else語句只在迴圈正常執行之後才執行並結束,所以,可以在<語句塊2>中放置評價迴圈執行情況的語句

for迴圈和if結構連用:

使用者登入:當名字輸入錯誤或密碼輸入錯誤時,重新輸入,當名字以及密碼輸入錯誤達到三次,程式結束

name = "佩奇"
password = "123"

for i in range(3):
    id_name = input("請輸入你的名字:")
    id_password = input("請輸入你的密碼:")
    if id_name == name and id_password == password:
        print("登入成功")

        break
else:
    print("輸入次數三次,程式結束")
    
    
結果:
請輸入你的名字:aa
請輸入你的密碼:123
請輸入你的名字:bb
請輸入你的密碼:123
請輸入你的名字:cc
請輸入你的密碼:123
輸入次數三次,程式結束

Process finished with exit code 0

無限迴圈:while

"""
python通過保留字while實現無限迴圈,基本使用方法如下:

while <條件>:
    <語句塊>

例如:
n = 0
while n <10:
    print(n)
    n = n + 3

結果:
0
3
6
9

當程式執行到while語句時,判斷條件如果為True,執行迴圈體語句,語句結束後返回再次判斷while語句的條件,當條件為False時,迴圈終止,執行與while同級別縮排的後續語句。

無限迴圈也有一種使用保留字else的擴充套件模式:

while <條件>:
	<語句塊1>
else:
	<語句塊2>
"""

迴圈控制有兩個輔助迴圈控制的保留字:break和continue
break用來跳出最內層for或while迴圈,脫離該迴圈後程式繼續執行迴圈後續程式碼。

例如:
while True:
    s = input("請輸入姓名:")
    if s == "q":
        break
    print("輸入的名字是" ,s)
print("程式退出")
結果:
請輸入姓名:佩奇
輸入的名字是 佩奇
請輸入姓名:喬治
輸入的名字是 喬治
請輸入姓名:q
程式退出

如果有2層或多層迴圈,break退出最內層迴圈。

而continue用來結束當前當次迴圈,即跳出迴圈體中,執行下面尚未執行的語句,但不跳出當前迴圈。

例如:
for s in 'python':
    if s == 'y':
        continue
    print(s,end='')
    
結果:pthon

"""
總結:continue語句和break語句的區別是:continue語句只結束本次迴圈,不終止下面程式的執行,而break語句直接結束整個當前迴圈。
強調:在continue之後新增同級程式碼毫無意義,因為永遠無法執行
"""

while死迴圈與效率問題:

"""
count = 0
while count < 5:
    print(count)
會一直0迴圈下去

while True:
    input("輸入姓名:")
不會終止,但是不會引發效率問題

while True:
    1 + 1
一直不停的工作,純計算無io的死迴圈會導致致命的效率問題,瞭解即可,不要實驗(費電腦)
"""

while迴圈巢狀,每一層都必須配一個break
例如:
"""
while True:
	while True:
		while True:
			break
		break
	break
"""

while迴圈和if結構連用:

使用者登入:當名字輸入錯誤或密碼輸入錯誤時,重新輸入,當名字以及密碼輸入成功時,登入成功那個

name = "佩奇"
password = "123"

while True:
    id_name = input("請輸入你的名字:")
    id_password = input("請輸入你的密碼:")
    if id_name == name and id_password == password:
        print("登入成功")
        break
    else:
        print("重新輸入")
        
請輸入你的名字:喬治
請輸入你的密碼:123
重新輸入
請輸入你的名字:佩奇
請輸入你的密碼:123
登入成功		

相關文章