1. 程式人生 > 實用技巧 >python | if else || where true 流程控制

python | if else || where true 流程控制

流程控制

流程控制即 控制流程, 具體指控制程式的執行流程, 而程式的流程分為三種,

  • 順序結構(以前寫的程式碼都是順序結構)
  • 分支結構(if 判斷)
  • 迴圈結構(while 和 for 迴圈)

分支結構

什麼是分支結構

分支結構就是根據條件判斷的真假去執行不同的程式碼塊.

為什麼要用分支結構

人類某些時候要根據條件決定做什麼事情, 比如, 今天下雨, 帶傘.
是最基本的邏輯判斷.

如何使用分支結構

if 語法

用if關鍵字實現分支結構.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if 條件1:  
程式碼塊1
......
elif 條件2:
程式碼塊2
......
elif 條件3:
程式碼塊3
......
else:
程式碼塊4.
# 如果以上條件符合, 則執行下面相應的程式碼.以上程式碼塊能且只能執行一塊.


# 1. python 用相同的縮排(四個空格表示一個縮排) 來標識一組程式碼. 同一組程式碼塊
# 2.條件可以是任意表達式, 但執行結果必須為bool型別
# 在if 判斷中的所有的資料型別都會轉換為布林型別
# None, 0 ,[],"",{} , 換算成bool值都為False , 非空即真

if 應用案例

1
2
3
4
5
# 案例1
# 如果: 女人年齡>3歲, 那麼叫阿姨
age = input("輸入年齡>>:")
if age >30:
print("叫阿姨!"")
1
2
3
4
5
6
7
# 案例2
# 如果 年齡>30 叫阿姨, 否則叫姐姐
age = input("輸入年齡>>:")
if age >30:
print("叫阿姨!"")
else:
print("叫姐姐1")
1
2
3
4
5
6
7
8
9
10
11
12
# 案例3
# 如果女人年齡>= 18 並且<= 22 歲 並且身高>170 體重<100 並且是漂亮的. 那麼表白. 否則. 阿姨好
age = input("輸入年齡>>:")
height = input("目測身高>>:")
is_beauty = True
weight = input("目測體重>>:")

if 18<= age <= 22 and height >170 and weight < 100 and is_beauty:
print("表白")

else:
print("叫阿姨")

練習登入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
username_from_db = "zhang"
password_from_db = 123
count = 0
tag = True
while tag:
username = input("please input your username>>:").strip()
password = input("please input your password>>:").strip()
if username == username_from_db and password == password_from_db:
print("登入成功")
while tag:
cmd = input(">>:")
if cmd == "exit":
tag = False
else:
print(f"呼叫{cmd}功能")
else:
print("使用者名稱或密碼錯誤,請重新收入")
count += 1

if count == 3:
print("輸錯超過三次, 賬號已鎖定")
tag = False

迴圈結構

while 迴圈語法

python中 有while 與for 兩中迴圈機制, 其中while 稱之為條件迴圈.

1
2
3
4
5
6
7
8
9
while 條件:
程式碼1
程式碼2
......


# while 的執行步驟,
# 步驟1 : 如果條件成立,則依次執行程式碼1,程式碼2 ...
# 步驟2: 執行完畢後, 再次判斷條件,如果條件仍然成立,則再次執行程式碼1,程式碼2,程式碼3

案例1
使用者認證

1
2
3
4
5
6
7
8
9
10
11
username_from_db = "zhang"
password_from_db = 123
count = 0
while count <3:
username = input("please input your username>>:").strip()
password = input("please input your password>>:").strip()
if username == username_from_db and password == password_from_db:
print("登入成功")
else:
print("使用者名稱或密碼錯誤,請重新收入")
count +=1

案例二 while + break 的使用
使用while 迴圈後, 當登入成功, 則需要後續操作, 需要結束本層迴圈 , 那麼就需要break.

  • break 結束本層迴圈. 結束後 迴圈內程式碼都不執行.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    username_from_db = "zhang"
    password_from_db = 123
    # 記錄驗證錯誤次數
    count = 0
    while count <3:
    username = input("please input your username>>:").strip()
    password = input("please input your password>>:").strip()
    if username == username_from_db and password == password_from_db:
    print("登入成功")
    break # 用於結束本層迴圈
    else:
    print("使用者名稱或密碼錯誤,請重新收入")
    count +=1

案例三, while 迴圈巢狀+ break
如果while 迴圈嵌套了很多層, 想要退出每層迴圈,則需要在每層都有一個break

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
username_from_db = "zhang"
password_from_db = 123
count = 0
while True:
username = input("please input your username>>:").strip()
password = input("please input your password>>:").strip()
if username == username_from_db and password == password_from_db:
print("登入成功")
while True: # 第二層迴圈
cmd = input(">>:")
if cmd == "exit":
break # 退出第二層迴圈
else:
print(f"呼叫{cmd}功能")
else:
print("使用者名稱或密碼錯誤,請重新收入")
count += 1

if count == 3:
print("輸錯超過三次, 賬號已鎖定")
break # 退出第一場迴圈

案例四, while 迴圈巢狀, + tag 的使用
針對巢狀多層的while迴圈, 如果當滿足某個條件就退出所有迴圈, 就可以使用tag , 即 將tag 初始值為 True , 當滿足某個條件後 tag 更改為False , 就會退出所有層迴圈

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
username_from_db = "zhang"
password_from_db = 123
count = 0
tag = True
while tag:
username = input("please input your username>>:").strip()
password = input("please input your password>>:").strip()
if username == username_from_db and password == password_from_db:
print("登入成功")
while tag:
cmd = input(">>:")
if cmd == "exit":
tag = False
else:
print(f"呼叫{cmd}功能")
else:
print("使用者名稱或密碼錯誤,請重新收入")
count += 1

if count == 3:
print("輸錯超過三次, 賬號已鎖定")
tag = False

案例五 while + continue 的使用.

  • break 代表結束本層迴圈,
  • continue 代表結束本次迴圈, 進入下一次迴圈
    1
    2
    3
    4
    5
    6
    7
    num = 10
    while num >1:
    num -=1
    if num ==6:
    continue # 結束到本次迴圈, 後面的程式碼則不會再執行, 直接進入下一次迴圈.
    print(num)
    # 結果 6 則不列印,
    案例六, while 與 else 的使用 .
    當迴圈正常結束後, 執行else 後語句, 用來驗證 迴圈是否正常結束.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    count = 0
    while count <5:
    count +=1
    print(f"這是第{count}次迴圈")
    else:
    print("迴圈正常結束")
    print("*"*50)

    # 輸出
    這是第1次迴圈
    這是第2次迴圈
    這是第3次迴圈
    這是第4次迴圈
    這是第5次迴圈
    迴圈正常結束
    **************************************************
    如果執行過程中用break , 則不會執行else語句.
1
2
3
4
5
6
7
8
9
10
11
12
13
count = 0
while count <5:
count +=1
if count ==3:
break
print(f"這是第{count}次迴圈")
else:
print("迴圈正常結束")
print("*"*50)
# 輸出結果
這是第1次迴圈
這是第2次迴圈
**************************************************

for 迴圈語法.

迴圈結構的第二種實現方法是 for 迴圈, for 迴圈可以做的事情 while迴圈都可以實現,之所以使用for 是因為, for迴圈在遍歷取值時, 更為簡潔.

  • for 迴圈語法如下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    for 變數名 in 可迭代物件: # 可迭代物件為, 字典,列表, 字串, 等..
    程式碼1
    程式碼2

    # 例子
    for i in [1,2,3,4]:
    print(i)

    # 輸出結果
    1
    2
    3
    4
    # 迴圈是, 將列表[1,2,3,4] 中的值分別取出並賦值給i 然後列印i 直到列表值取完.
    案例1 , 列印數字1-5
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # for 版本
    for count in range(6):
    print(count)

    # while 版本
    count = 0
    while count<6:
    print(count)
    count +=1

    # range 有三個引數, start = 其實數字 end = 結束數字. sep =步長
    # range 顧頭不顧尾.
    遍歷字典, 得到的是字典中的key 而不是 值.
    1
    2
    3
    4
    5
    6
    for k in {"name":"Evgeny", "age":18}
    print(k)

    # 輸出結果
    name
    age
    案例 三, for 迴圈巢狀.
1
2
3
4
5
6
7
8
9
# 使用for 迴圈巢狀的方式列印以下圖形
****
****
****

for i in range(3):
for j in range(4):
print("*", end = "")
print() # 表示換行

注意: break 與continue 也可以用於for迴圈, 使用發放與while迴圈相同.