跳到主要内容

for 循环:重复的艺术

为什么需要循环?

假设你要打印 1 到 5:

print(1)
print(2)
print(3)
print(4)
print(5)

如果要打印 1 到 1000 呢?复制粘贴 1000 行?当然不——循环就是干这个的。

基本 for 循环

加载代码编辑器中……

这是两种语言差别最大的地方之一:

PythonJavaScript
语法for x in 可迭代对象:for (let i = 0; i < n; i++) {}
风格像英语:"对于每个 x 在 xxx 中"像数学:"初始值;条件;步进"
简洁✅ 超级简洁❌ 要写三段(但很灵活)

Python 的 for 循环像在说人话:"对于 每个 i range(5) ,做这件事"。JS 的经典 for 循环更像在配置一台机器的三个参数。

遍历列表/数组

这是循环最常见的用途:

加载代码编辑器中……

JS 的循环选择指南

JS 有好几种 for 循环,初学者容易晕。简单记:

JS 循环方式什么时候用
for (let i = 0; ...)需要精确控制索引时
for (const x of arr)遍历数组元素(最像 Python)
arr.forEach(fn)需要索引 + 元素时
for (const key in obj)遍历对象的键(⚠️ 别用在数组上)
踩坑提醒

for...infor...of 别搞混! 这是 JS 初学者踩坑 Top 3。

  • for...in → 遍历键名(key),主要用于对象
  • for...of → 遍历(value),用于数组
const arr = ["a", "b", "c"]
for (const x in arr) console.log(x) // "0", "1", "2"(索引!)
for (const x of arr) console.log(x) // "a", "b", "c"(值!)

如果看到 for...in 用在数组上,基本可以确认是 bug——应该用 for...of

嵌套循环

循环里套循环,用来处理二维数据(比如表格、棋盘):

加载代码编辑器中……

break 和 continue

有时你需要提前退出循环或跳过某次:

加载代码编辑器中……

好消息:breakcontinue 在两种语言里含义和用法完全一样!终于有个不用记区别的了 🎉

🏋️AI 练习

用 for 循环完成 "FizzBuzz" 经典面试题:

打印 1 到 20。如果是 3 的倍数打印 "Fizz",5 的倍数打印 "Buzz",既是 3 又是 5 的倍数打印 "FizzBuzz",否则打印数字本身。

先自己试,实在想不出来再问 AI——但要让 AI 给你 Python 和 JS 两个版本。

小结

概念PythonJavaScript
遍历for x in iterable:for (const x of arr)
范围循环for i in range(n):for (let i = 0; i < n; i++)
带索引遍历enumerate().forEach((val, i))
break / continue✅ 一样✅ 一样

记住:Python 的 for 像诗——简洁优雅。JS 的 for 像说明书——啰嗦但啥都能干。