循環(huán)是 Python 編程中實現(xiàn)代碼重復執(zhí)行的核心機制,它能讓程序按照指定條件反復執(zhí)行某段代碼,避免冗余的重復編寫。Python 提供了 for 和 while 兩種循環(huán)結(jié)構(gòu),分別適用于不同的場景:for 循環(huán)擅長遍歷序列或集合,while 循環(huán)則適合根據(jù)條件控制循環(huán)次數(shù)。掌握這兩種循環(huán)的實現(xiàn)方法及適用場景,是編寫高效 Python 代碼的基礎(chǔ)。
一、Python 循環(huán)的實現(xiàn)方式
(一)for 循環(huán):遍歷序列的利器
for 循環(huán)主要用于遍歷可迭代對象(如列表、字符串、元組、字典等),語法格式為:
for 變量 in 可迭代對象: # 循環(huán)體(縮進的代碼塊)
遍歷序列類型
遍歷列表:
fruits = ["apple", "banana", "orange"]for fruit in fruits: print(fruit) # 依次輸出列表中的每個元素
遍歷字符串(按字符):
message = "hello"for char in message: print(char) # 依次輸出'h'、'e'、'l'、'l'、'o'
遍歷字典(默認遍歷鍵):
student = {"name": "Alice", "age": 20}for key in student: print(key, student[key]) # 輸出鍵值對
使用 range () 生成數(shù)字序列
當需要按固定次數(shù)循環(huán)時,可通過range(start, end, step)生成數(shù)字序列,示例:
# 輸出1到5(range(1,6)生成1-5的整數(shù))for i in range(1, 6): print(i)# 輸出10以內(nèi)的偶數(shù)(步長為2)for i in range(0, 10, 2): print(i) # 0, 2, 4, 6, 8
(二)while 循環(huán):條件驅(qū)動的循環(huán)
while 循環(huán)根據(jù)條件判斷是否執(zhí)行循環(huán)體,條件為True時持續(xù)執(zhí)行,為False時退出,語法格式為:
while 條件表達式: # 循環(huán)體 # (通常包含修改條件的語句,避免無限循環(huán))
示例:計算 1 到 10 的累加和
sum_result = 0i = 1while i <= 10: # 條件:i小于等于10 sum_result += i i += 1 # 修改條件變量i,避免無限循環(huán)print("和為:", sum_result) # 輸出55
(三)循環(huán)控制:break 與 continue
break:立即終止當前循環(huán),跳出循環(huán)體。
示例:找到第一個偶數(shù)就停止
for num in [1, 3, 4, 5, 6]: if num % 2 == 0: print("找到偶數(shù):", num) break # 找到后跳出循環(huán)
continue:跳過當前循環(huán)的剩余部分,直接進入下一次循環(huán)。
示例:只打印奇數(shù)
for num in range(1, 10): if num % 2 == 0: continue # 跳過偶數(shù) print(num) # 輸出1,3,5,7,9
二、for 與 while 循環(huán)的適用場景
(一)優(yōu)先使用 for 循環(huán)的場景
遍歷已知序列或集合:當需要處理列表、字符串、字典等可迭代對象中的每個元素時,for 循環(huán)是最自然的選擇,代碼更簡潔。
示例:統(tǒng)計列表中正數(shù)的個數(shù)
numbers = [3, -2, 5, 0, 7]count = 0for num in numbers: if num > 0: count += 1print("正數(shù)個數(shù):", count)
循環(huán)次數(shù)固定:若提前知道循環(huán)執(zhí)行的次數(shù)(如重復 10 次、處理 100 條數(shù)據(jù)),使用for + range()更直觀。
示例:打印 5 次 "Hello"
for _ in range(5): # 用_表示無需使用的循環(huán)變量 print("Hello")
迭代器與生成器操作:for 循環(huán)能直接遍歷迭代器和生成器(如文件對象、itertools工具生成的序列),無需手動管理索引。
示例:逐行讀取文件內(nèi)容
with open("test.txt", "r") as f: for line in f: # 直接遍歷文件對象(迭代器) print(line.strip())
(二)優(yōu)先使用 while 循環(huán)的場景
循環(huán)次數(shù)不確定:當循環(huán)次數(shù)依賴動態(tài)條件(如用戶輸入、外部事件),無法提前確定時,while 循環(huán)更合適。
示例:等待用戶輸入正確密碼
password = "123456"while True: user_input = input("請輸入密碼:") if user_input == password: print("密碼正確!") break # 條件滿足,退出循環(huán) else: print("密碼錯誤,請重試")
無限循環(huán)場景:需要持續(xù)運行的程序(如服務器監(jiān)聽請求、實時數(shù)據(jù)采集),通常用while True創(chuàng)建無限循環(huán),配合break在特定條件下退出。
示例:簡單的命令行交互程序
while True: cmd = input("請輸入命令(輸入exit退出):") if cmd == "exit": break print(f"執(zhí)行命令:{cmd}")
基于狀態(tài)變化的循環(huán):當循環(huán)是否繼續(xù)取決于某個狀態(tài)的變化(如變量達到閾值、標志位改變),while 循環(huán)能更清晰地表達條件邏輯。
示例:計算累加到和大于 100 的次數(shù)
total = 0count = 0while total <= 100: count += 1 total += countprint(f"累加{count}次后和超過100,和為{total}")
三、循環(huán)使用的注意事項
避免無限循環(huán):while 循環(huán)需確保條件最終會變?yōu)镕alse(如更新i += 1),否則會導致程序卡死;for 循環(huán)若遍歷無限迭代器(如itertools.count()),也需配合break控制退出。
循環(huán)嵌套效率:多層嵌套循環(huán)(尤其是三層及以上)會顯著降低性能,處理大量數(shù)據(jù)時需優(yōu)化(如使用列表推導式、向量化操作)。
選擇合適的循環(huán)變量:for 循環(huán)中,若不需要循環(huán)變量的值,可用_代替(如for _ in range(5)),增強代碼可讀性。
Python 的 for 和 while 循環(huán)并非對立關(guān)系,而是互補的工具。選擇的核心原則是 “自然性”:處理序列元素或固定次數(shù)循環(huán)用 for,依賴動態(tài)條件或次數(shù)不確定用 while。熟練掌握兩者的特性,能讓代碼更簡潔、高效,更好地表達業(yè)務邏輯。實際開發(fā)中,也常結(jié)合兩種循環(huán)的優(yōu)勢(如 for 循環(huán)內(nèi)部嵌套 while 循環(huán))解決復雜問題。