python for in循环不能遍历整数怎么解决

python for in循环不能遍历整数怎么解决

> 本文整理 Python for 循环常见错误与修复,含完整可运行示例,适合课程作业、实验调试时查阅。

同学你好,看到你在 for 循环上卡住了,很正常的,大一的时候我也被 range 和列表遍历搞得头大。别急,咱们一步步来拆,以后写循环就像喝水一样自然。

先给排查思路(3步)

1. 明确"我要对谁循环"

先搞清楚循环的对象是什么:

  • 是数字范围(比如 1 到 10)?用 range()

  • 是列表里的每个元素(比如 [1, 2, 3])?直接 for item in list

  • 是字典的键或值?用 .keys().values().items()

常见错误 :把整个列表当循环变量,比如 for i in [1, 2, 3] 里,i 是元素,不是索引。如果要用索引,得用 range(len(list))

2. 检查循环体里"每一步做什么"

循环体里的代码是重复执行的,你要确保:

  • 每次循环都更新了结果(比如累加、添加元素)。

  • 没有在循环里意外重置变量(比如把总和每次归零)。

典型翻车

python 复制代码
total = 0
for i in range(5):
    total = 0   

# 这里重置了!每次循环 total 都是0
    total += i
print(total)  

# 输出 4 而不是 10

3. 用"打印调试法"看中间结果

在循环里加 print 看每一步发生了什么:

python 复制代码
for i in range(5):
    print(f"第{i}步,当前i={i}")
    

# 其他代码

看到输出后,你就能发现 i 是不是你想要的,或者某些逻辑顺序错了。


20-40 行可运行示例代码

下面是一个经典场景:计算 1 到 10 的偶数平方和。包含正确写法、常见错误和调试方法。

python 复制代码
# 场景:计算 1~10 中所有偶数的平方之和

# 正确结果:2² + 4² + 6² + 8² + 10² = 4 + 16 + 36 + 64 + 100 = 220

# ---------- 错误写法 1:忘记累加 ----------
total = 0
for i in range(1, 11):
    if i % 2 == 0:
        square = i ** 2
        

# 这里没有把 square 加到 total 上!
print(f"错误写法1结果:{total}")  

# 输出 0,因为 total 从未更新

# ---------- 错误写法 2:误用索引 ----------
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
total = 0
for i in numbers:  

# i 是元素,不是索引
    if numbers[i] % 2 == 0:  

# 这里想用索引,但 i 是元素,所以 numbers[3] 才是 4
        total += i ** 2

# 会报 IndexError,因为当 i=10 时,numbers[10] 不存在(列表只有 0~9 索引)

# ---------- 正确写法 1:直接遍历元素 ----------
total = 0
for num in numbers:
    if num % 2 == 0:
        total += num ** 2
print(f"正确写法1结果:{total}")  

# 输出 220

# ---------- 正确写法 2:用 range 遍历索引 ----------
total = 0
for i in range(len(numbers)):
    if numbers[i] % 2 == 0:
        total += numbers[i] ** 2
print(f"正确写法2结果:{total}")  

# 输出 220

# ---------- 调试技巧:打印每一步 ----------
print("\n--- 调试输出 ---")
total = 0
for i, num in enumerate(numbers, start=1):
    if num % 2 == 0:
        print(f"第{i}步:数字{num}是偶数,平方{num**2},当前总和{total + num**2}")
        total += num ** 2
    else:
        print(f"第{i}步:数字{num}是奇数,跳过")
print(f"最终总和:{total}")

输出结果

text 复制代码
错误写法1结果:0
正确写法1结果:220
正确写法2结果:220

--- 调试输出 ---
第1步:数字1是奇数,跳过
第2步:数字2是偶数,平方4,当前总和4
第3步:数字3是奇数,跳过
第4步:数字4是偶数,平方16,当前总和20
第5步:数字5是奇数,跳过
第6步:数字6是偶数,平方36,当前总和56
第7步:数字7是奇数,跳过
第8步:数字8是偶数,平方64,当前总和120
第9步:数字9是奇数,跳过
第10步:数字10是偶数,平方100,当前总和220
最终总和:220

总结一下

  • 先想清楚"循环对象是什么",是元素还是索引。

  • 循环体里确保变量有更新(累加、拼接等)。

  • 别怕用 print,调试多了就有感觉了。

相关推荐
笨鸟先飞,勤能补拙3 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能3 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂4 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study4 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境5 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境5 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1235 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy12393102166 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb006 小时前
一个项目带你入门AI应用开发01
python
0566466 小时前
Python康复训练——常用标准库
开发语言·python·学习