
2025年最新LangChain Agent教程:從入門到精通
# 在循環(huán)體中,針對每次迭代的 "變量" 做相應(yīng)的操作
示例:
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print("I like", fruit)
# 輸出
I like apple
I like banana
I like orange
message = "Hello"
for letter in message:
print(letter)
# 輸出
H
e
l
l
o
可迭代對象是可以用循環(huán)(如 for
)逐個訪問元素的數(shù)據(jù)集合,比如列表、字符串、字典等。例如,遍歷 ["蘋果", "香蕉"]
時,循環(huán)會依次取出“蘋果”和“香蕉”。它代表一種“可依次取出內(nèi)容”的特性。
如果我們想循環(huán)執(zhí)行固定次數(shù),一種常見方法是結(jié)合 range()
函數(shù)來使用。range(n)
會生成從 0 到 n-1 的整數(shù)序列。
for i in range(5):
print(i)
# 輸出
0
1
2
3
4
range(start, end, step)
可以指定起始值——start、結(jié)束值(不含)——end和步長——step,步長沒有指定的話默認是1。
# 從1到5(不含5),步長為1
for num in range(1, 5):
print(num)
# 輸出
# 1
# 2
# 3
# 4
# 從1到10(不含10),步長為2
for num in range(1, 10, 2):
print(num)
# 輸出
# 1
# 3
# 5
# 7
# 9
while
循環(huán)適用于我們不知道具體循環(huán)次數(shù),但想在某個條件滿足前一直循環(huán)的場景。語法如下:
while 條件表達式:
# 只要 條件表達式 為 True,就持續(xù)執(zhí)行這個代碼塊
# 當 條件表達式 為 False,循環(huán)結(jié)束
示例:計算 1 到 100 的和
sum_value = 0
n = 1
while n <= 100:
sum_value += n
n += 1
print("1 到 100 的和是:", sum_value)
# 輸出
1 到 100 的和是: 5050
代碼解釋:
sum_value = 0
,n = 1
;n <= 100
時,就把 n
累加到 sum_value
,然后把 n
加 1;n
超過 100,條件不成立,循環(huán)結(jié)束,輸出結(jié)果。如果你不小心遺漏了更新循環(huán)條件的語句(比如上例中的 n += 1
),就可能導(dǎo)致 while
永遠都不變?yōu)?False,從而陷入無限循環(huán)。在實際寫代碼時要留意確保循環(huán)能正確終止,否則你的程序可能會卡住或占用大量資源。
break
用于立即終止當前循環(huán)。比如我們想讓用戶猜數(shù)字,如果猜對就結(jié)束循環(huán):
secret = 7
while True:
guess = int(input("猜一個數(shù)字(1-10):"))
if guess == secret:
print("恭喜你,猜對了!")
break # 猜對就退出循環(huán)
else:
print("不對哦,再試試")
# 輸出
猜一個數(shù)字(1-10):1
不對哦,再試試
猜一個數(shù)字(1-10):6
不對哦,再試試
猜一個數(shù)字(1-10):7
恭喜你,猜對了!
只要用戶猜對,break
就會讓循環(huán)立刻停止。
continue
會跳過當前循環(huán)迭代,直接進入下一次循環(huán)。一般用來忽略某些特殊情況:
for i in range(1, 6):
if i == 3:
continue # 跳過 i=3 這次循環(huán)
print(i)
# 輸出
1
2
4
5
Python 允許在 for
或 while
循環(huán)后面寫 else
,只有當循環(huán)沒有被 break 或異常跳出時,才會執(zhí)行 else
塊。一個常見場景是查找元素:
numbers = [1, 2, 3, 4, 5]
target = 3
for num in numbers:
if num == target:
print("找到目標數(shù)字:", target)
break
else:
print("沒有找到目標數(shù)字")
# 輸出
找到目標數(shù)字: 3
numbers = [1, 2, 3, 4, 5]
target = 6 # 把目標數(shù)字改為6
for num in numbers:
if num == target:
print("找到目標數(shù)字:", target)
break
else:
print("沒有找到目標數(shù)字")
# 輸出
沒有找到目標數(shù)字
target
并用 break
跳出循環(huán),就不會執(zhí)行 else
塊。else
塊就會執(zhí)行,打印“沒有找到目標數(shù)字”。示例:九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end='\t')
print()
# 輸出
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
解析:
for i in range(1, 10):
# range(1, 10) 會生成從 1 到 9(不包含 10)的整數(shù)序列,也就是 1, 2, 3, ..., 9
# i 在每次循環(huán)時會依次取上面序列中的值,因此當最外層循環(huán)運行時,i 會依次是 1, 2, 3, ..., 9
# 這個循環(huán)相當于“控制行數(shù)”或者“控制哪一行的乘法”,因為最常見的乘法表是按行從 1×1 開始,到 9×9 結(jié)束。
for j in range(1, i + 1):
# 這是一個“內(nèi)層循環(huán)”,用來控制每一行中要打印哪些乘法式子
# 注意這里的 range(1, i + 1) 表示從 1 到 i(包含 i)。因為 range(a, b) 默認是不包含 b 的,寫 i + 1 才能把 i 本身包含進來
# 舉例:當外層的 i = 3 時,range(1, i + 1) 就是 range(1, 4),也就是 1, 2, 3。因此會打印 1×3=3、2×3=6、3×3=9 這幾個乘法式子
# 每一行打印完對應(yīng)的乘法公式后,才會回到外層循環(huán),讓 i 進入下一個值,打印下一行
print(f"{j}×{i}={i*j}", end='\t')
# print() 函數(shù)默認在輸出結(jié)束后會換行(即 end='\n')。但是這里把 end 改成了 '\t'(制表符),所以不會立即換行,而是用一個 Tab 空格來分隔各個乘法結(jié)果,讓它們在同一行顯示并對齊
# f"{j}×{i}={i*j}" 中的 f 表示“格式化字符串(f-string)”。把 j、i、i*j 的值自動填進字符串里,這樣在打印時就能顯示具體的乘法過程和結(jié)果
print()
# 此處打印空白是為了打印完一行的乘法式子后進行換行
示例:輸出1到100之間的質(zhì)數(shù)
for num in range(2, 101):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print(num, end=' ')
# 輸出
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
列表推導(dǎo)式就是用一行簡短的代碼來創(chuàng)建或生成一個新列表的方式。它看起來很像在一對方括號 []
里面寫了一個小小的 for
循環(huán),并且可以在循環(huán)里加入一些條件判斷(可選)。
語法結(jié)構(gòu):
[表達式 for 變量 in 可迭代對象 if 條件]
如果你想生成一個包含 1 到 5 的列表,常見的做法是:
numbers = []
for i in range(1, 6):
numbers.append(i)
print(numbers)
# 輸出
[1, 2, 3, 4, 5]
而有了列表推導(dǎo)式,就可以把上面的循環(huán)簡化成:
numbers = [i for i in range(1, 6)]
print(numbers)
# 輸出
[1, 2, 3, 4, 5]
這兩段代碼的效果是一模一樣的!只是第二段更短、更直觀。
示例:生成平方數(shù)列表
squares = [x ** 2 for x in range(1, 11)]
print(squares)
# 輸出
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Python 使用縮進來表示循環(huán)體。一旦你寫完 for
或 while
后面的冒號 :
, 所有屬于循環(huán)體的代碼都必須在同一縮進層級。
在 while
循環(huán)中,若忘記更新條件變量,容易進入無限循環(huán)。如果這不符合預(yù)期,需要及時糾正。
break
和 continue
它們能讓邏輯更靈活,但也可能讓程序流程難以追蹤。使用前最好想清楚代碼邏輯。
想要一次遍歷多個序列或者做復(fù)雜判斷時,可以結(jié)合 if-else
、range()
、zip()
等函數(shù)、結(jié)構(gòu)或運算符一起使用。
for
循環(huán)常用于遍歷已有序列或固定次數(shù)的循環(huán)(借助 range()
)。
while
循環(huán)在條件為真時持續(xù)執(zhí)行,適用于需要不確定次數(shù)的重復(fù)操作。
break和continue
:是實現(xiàn)大多數(shù)邏輯的基礎(chǔ),靈活運用能編寫出豐富多樣的功能。
有了循環(huán),你的 Python 程序就不僅能做條件判斷,還能自動重復(fù)執(zhí)行特定操作,從而輕松解決各種批量任務(wù)、累加計算或數(shù)據(jù)處理。多多練習(xí)和應(yīng)用,你就能進一步領(lǐng)悟到編程的“自動化”魅力了!