Python流程控制之條件循環(huán)與異常處理實戰(zhàn)指南
前言
在編程中,流程控制是決定程序執(zhí)行路徑的核心機制。Python 提供了清晰、簡潔的語法來實現條件判斷、循環(huán)和異常處理,使代碼邏輯更靈活、健壯。
1. 條件判斷語句
條件判斷用于根據布爾值(True/False)決定是否執(zhí)行某段代碼。
1.1if語句
最簡單的條件判斷形式:當條件為 True 時,執(zhí)行代碼塊。
age = 18
if age >= 18:
print("你已成年,可以投票!")?? 注意:Python 使用縮進(通常是 4 個空格)表示代碼塊,而非大括號
{}。
1.2 布爾值(Boolean)
條件判斷的核心是布爾表達式,其結果為 True 或 False。
常見返回布爾值的操作:
print(5 > 3) # True
print("a" == "A") # False(區(qū)分大小寫)
print(10 != 20) # True哪些值會被視為False?
FalseNone- 數字
0、0.0 - 空字符串
"" - 空列表
[]、空字典{}、空元組()
其余所有值均為 True。
if []:
print("不會執(zhí)行")
if "Hello":
print("非空字符串為 True") # 會執(zhí)行1.3if + else語句
提供“二選一”邏輯:條件成立執(zhí)行 if 塊,否則執(zhí)行 else 塊。
score = 85
if score >= 60:
print("及格!")
else:
print("不及格,請努力!")1.4if + elif + else語句
用于多分支判斷。elif 是 “else if” 的縮寫。
a = int(input("請輸入您的年齡:"))
if a < 10:
print("您是兒童")
elif a < 16:
print("您是少年")
else:
print("您比少年大")?? 執(zhí)行規(guī)則:從上到下依次判斷,一旦某個條件為 True,后續(xù) elif/else 將被跳過。
1.5 多個elif語句
Python 允許任意數量的 elif,適用于復雜分級場景。當需要對多個條件進行判斷時,可以插入多個elif語句。
a = int(input("請輸入您的年齡:"))
if a < 10:
print("您是兒童")
elif a < 16:
print("您是少年")
elif a < 30:
print("您是青年")
elif a < 59:
print("您是中年人")
else:
print("您是老年人")代碼執(zhí)行結果(當用戶輸入79):
請輸入您的年齡:79
您是老年人
1.6 條件判斷語句的嵌套
條件判斷語句中的代碼塊也可以包含一個或多個條件判斷語句。在 if 塊內部再寫 if,實現更精細的邏輯控制。
a = int(input("請輸入您的年齡:"))
if a < 10:
if a < 1:
print("您是嬰兒")
else:
print("您是兒童")
elif a < 16:
print("您是少年")
else:
print("您比少年大")?? 建議:嵌套不宜過深(一般不超過 3 層),否則影響可讀性。
1.7 多個條件判斷語句
使用邏輯運算符組合多個條件:
| 運算符 | 含義 | 示例 |
|---|---|---|
and | 且(都為真才真) | age >= 18 and score >= 60 |
or | 或(有一個為真即真) | weather == "sunny" or temp > 30 |
not | 非(取反) | not is_raining |
username = "admin"
password = "123456"
if username == "admin" and password == "123456":
print("登錄成功!")
else:
print("用戶名或密碼錯誤")1.8if + else的復合寫法(三元表達式)
Python 支持一行寫法,適用于簡單賦值或返回。
語法:
表達式1 if 條件判斷語句 else 表達式2
示例:
age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 成年
# 也可用于 print
print("及格" if score >= 60 else "不及格")? 優(yōu)點:簡潔;? 缺點:復雜邏輯不適用,可讀性下降。
2. 循環(huán)語句
循環(huán)用于重復執(zhí)行某段代碼,直到滿足特定條件。
2.1for循環(huán)
用于遍歷可迭代對象(如字符串、列表、字典、range 等)。
基本用法:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)range()函數
生成數字序列,常用于控制循環(huán)次數。
| 調用方式 | 說明 | 示例 |
|---|---|---|
range(stop) | 從 0 到 stop-1 | range(3) → 0,1,2 |
range(start, stop) | 從 start 到 stop-1 | range(2, 5) → 2,3,4 |
range(start, stop, step) | 指定步長 | range(0, 10, 2) → 0,2,4,6,8 |
for i in range(5):
print(f"第 {i+1} 次循環(huán)")for循環(huán)的復合寫法(列表推導式)
一行生成新列表,本質是 for 的簡化。
# 普通寫法
squares = []
for x in range(5):
squares.append(x ** 2)
# 列表推導式(推薦)
squares = [x ** 2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]?? 列表推導式還可加條件:
evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
2.2while循環(huán)
只要條件為 True,就持續(xù)循環(huán)。
count = 0
while count < 3:
print(f"計數:{count}")
count += 1 # 必須有退出機制,否則死循環(huán)!?? 警惕死循環(huán):確保循環(huán)體內有改變條件的語句。
2.3 嵌套循環(huán)
在一個循環(huán)內部再寫一個循環(huán),常用于處理二維結構。
import time
for i in range(60):
for j in range(60):
time.sleep(1)
print(f'當前時間為 {i} 分 {j} 秒')
print(f"{i} 分鐘結束")
運行結果:

2.4break和continue語句
break:立即退出整個循環(huán)continue:跳過本次循環(huán)剩余代碼,進入下一次循環(huán)
示例:
# break:找到目標就停止
for num in [1, 3, 5, 7, 9]:
if num == 5:
print("找到 5,退出循環(huán)")
break
print(num)
# continue:跳過偶數
for i in range(1, 6):
if i % 2 == 0:
continue
print(i) # 輸出:1, 3, 5?
break和continue在for和while中均可使用。
3. 異常處理語句
程序運行時可能遇到錯誤(如除零、文件不存在)。異常處理機制可捕獲錯誤并優(yōu)雅處理,避免程序崩潰。
3.1 異常處理語句的使用
使用 try...except 結構:
try:
n = int(input("請輸入一個整數:"))
print(n)
except:
print("您輸入的不是一個整數")
a = 3
print("a的內容為:", a)完整結構:
try:
# 可能出錯的代碼
except ExceptionType1:
# 處理異常1
except ExceptionType2:
# 處理異常2
else:
# 無異常時執(zhí)行
finally:
# 無論是否有異常,都會執(zhí)行(常用于清理資源)3.2 異常捕獲
捕獲多種異常:
try:
num = int(input("請輸入一個數字:"))
result = 100 / num
except ValueError:
print("輸入的不是有效數字!")
except ZeroDivisionError:
print("不能除以零!")
except Exception as e:
print(f"發(fā)生了未知錯誤:{e}")
else:
print(f"結果是:{result}")
finally:
print("程序結束。")常見內置異常類型:
| 異常 | 觸發(fā)場景 |
|---|---|
ValueError | 類型轉換失?。ㄈ?nbsp;int("abc")) |
ZeroDivisionError | 除零錯誤 |
FileNotFoundError | 文件未找到 |
IndexError | 列表索引越界 |
KeyError | 字典鍵不存在 |
? 最佳實踐:
- 盡量捕獲具體異常,而非籠統(tǒng)的
Exception- 在
except中記錄日志或提示用戶,不要靜默忽略錯誤
項目案例:實現超市收銀系統(tǒng)
項目描述:
某超市的白菜標價為2.5元/千克,根據頗客購買量的不同有不同的折扣。
- 如果顧客的購買量小于2千克,則 打9折;
- 如果顧客的購買量為2~4(不包括4)千克,則打8折;
- 如果顧客的購買量為4~10(不包括10)千克,則打6折;
- 如果顧客的購買量大于等于10千克,則打4折。
項目任務:
現需要設計一個代碼程序,用于實現在營業(yè)員輸入白菜重量之后自動計算出顧客需要支付的金額。
項目實現代碼:
while True:
try:
weight = float(input('請輸入白菜的重量:'))
break
except:
print("輸入錯誤,重新輸入,", end='')
if weight < 2.0:
print("請付款:", weight*2.5*0.9, '元')
elif weight < 4.0:
print("請付款:", weight*2.5*0.8, '元')
elif weight < 10.0:
print("請付款:", weight*2.5*0.6, '元')
else:
print("請付款:", weight*2.5*0.4, '元')項目實現結果:

以上代碼只能實現計算一位顧客需要支付的金額,每成功計算出一位顧客需要支付的金額后,程序會自動結束。
基于此我們還可以將代碼進行改進,以實現在計算完一位頤客需要支付的金額后會繼快計算下一位顧客 需要支付的金額。改進后的代碼如下:
while True:
try:
weight = float(input('請輸入白菜的重量:'))
if weight < 2.0:
print("請付款:", weight*2.5*0.9, '元')
elif weight < 4.0:
print("請付款:", weight*2.5*0.8, '元')
elif weight < 10.0:
print("請付款:", weight*2.5*0.6, '元')2
else:
print("請付款:", weight*2.5*0.4, '元')
except:
print("輸入錯誤,重新輸入,", end='')改進后的項目實現結果:

??改進后的代碼程序更滿足實際的使用需求,這是因為改進后的代碼將條件判斷語句加入了while循環(huán)語句的try代碼塊中,因此代碼會一直循環(huán)下去
總結
到此這篇關于Python流程控制之條件循環(huán)與異常處理的文章就介紹到這了,更多相關Python條件循環(huán)與異常處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

