一、爲什麼需要循環?¶
在編程中,我們經常需要重複執行某段代碼。比如:打印1到10的數字、處理列表中的每個元素、或者讓用戶持續輸入直到滿足條件。這時候,循環就派上用場了——它能讓我們用更少的代碼完成重複任務,避免重複寫代碼。
Python中有兩種最基礎的循環結構:for循環和while循環。它們各有特點,適用不同場景。
二、for循環:遍歷序列的“重複工具”¶
for循環主要用於遍歷可迭代對象(比如列表、字符串、數字序列等),每次從序列中取出一個元素,執行循環體內的代碼。
1. 基本語法¶
for 變量 in 可迭代對象:
# 循環體(縮進的代碼塊)
執行操作
可迭代對象是什麼?簡單說就是能“一個個取元素”的東西,比如列表([1,2,3])、字符串("hello")、range生成的數字序列等。
2. 常見用法舉例¶
例1:打印1到5的數字
如果用for循環,我們可以用range(1,6)生成1到5的序列(range(a,b)生成從a到b-1的整數):
for num in range(1, 6): # num依次取1,2,3,4,5
print(num)
# 輸出:1 2 3 4 5
例2:遍歷列表中的元素
如果要處理列表裏的每個元素(比如計算所有成績的平均分):
scores = [90, 85, 95, 80]
total = 0
for score in scores: # score依次取90,85,95,80
total += score # 累加每個分數
average = total / len(scores)
print("平均分:", average) # 輸出:平均分: 87.5
例3:遍歷字符串
字符串也是可迭代對象,for循環會逐個取出字符:
message = "Python"
for char in message:
print(char)
# 輸出:P y t h o n(每個字符一行)
三、while循環:條件控制的“重複開關”¶
while循環的核心是判斷一個條件是否成立,如果條件爲True,就執行循環體;條件爲False,則停止循環。
1. 基本語法¶
while 條件:
# 循環體(縮進的代碼塊)
執行操作
# (重要!通常需要修改條件中的變量,否則可能無限循環)
關鍵點:while循環的次數由條件決定,所以必須確保條件最終會變爲False,否則會陷入“無限循環”。
2. 常見用法舉例¶
例1:計算1到10的和
用while循環累加,初始值count=1,每次加1直到count=11:
count = 1
total = 0
while count <= 10: # 條件:count不超過10
total += count # 累加當前count
count += 1 # 修改條件變量,否則條件永遠爲True
print("總和:", total) # 輸出:總和:55
例2:用戶輸入驗證(直到正確輸入)
假設需要用戶輸入“密碼”,直到輸入正確(比如密碼是123456):
password = "123456"
user_input = ""
while user_input != password: # 條件:輸入不等於密碼時繼續循環
user_input = input("請輸入密碼:")
if user_input != password:
print("密碼錯誤,請重試!")
print("密碼正確,歡迎使用!")
四、for循環 vs while循環:核心區別¶
| 對比項 | for循環 | while循環 |
|---|---|---|
| 循環依據 | 遍歷可迭代對象(如列表、字符串、range) | 判斷條件是否成立(由代碼手動控制) |
| 循環次數 | 通常固定(由序列長度決定) | 由條件控制(可能無限循環,除非條件修改) |
| 適用場景 | 明確知道要遍歷的對象(如處理列表元素) | 不確定循環次數,但有終止條件(如用戶交互) |
五、應用場景總結¶
優先用for循環的情況:
- 需要遍歷列表、字符串、元組等數據(比如處理“學生姓名列表”);
- 生成一個已知範圍的數字序列(用range,比如“打印1到100的偶數”);
- 處理可迭代對象(如字典的鍵、值或鍵值對)。
優先用while循環的情況:
- 不確定循環次數,但知道終止條件(比如“直到用戶輸入正確”);
- 需要持續等待某個事件發生(如“監控文件是否更新”);
- 條件依賴於之前的操作結果(比如“累加直到總和超過100”)。
六、避坑指南:初學者常見錯誤¶
-
while循環無限循環:忘記在循環體內修改條件變量!
比如:count = 1; while count <= 10: print(count);(如果沒有count +=1,會一直打印1)。 -
for循環遍歷不可變類型:
for只能遍歷可迭代對象,如果直接遍歷數字(如for num in 10)會報錯。 -
range的參數錯誤:
range(a, b)必須滿足a < b,否則生成空序列(比如range(5,1)不會循環)。
七、小練習¶
嘗試用兩種循環實現“打印1到10的平方”:
- for循環:用range(1,11)遍歷,每次計算num*num;
- while循環:初始化count=1,循環內計算平方,同時count +=1直到count>10。
通過對比兩種寫法,你會更清晰地理解它們的區別~
循環是編程中處理重複任務的核心工具。掌握for和while的特點後,就能根據實際場景靈活選擇,讓代碼更簡潔高效!