Python 3.6 TypeError: 'int'对象不可迭代:含义及修复方法
解决TypeError: 'int' object is not iterable错误及幂计算代码修复
错误含义解释
TypeError: 'int' object is not iterable 这个错误很好理解:你试图对一个整数(int)对象执行迭代操作(比如用for循环遍历它),但整数是单个独立的值,没有可被逐个取出的元素,所以Python会抛出这个错误来提示你操作不合法。
你的代码问题分析
先看你写的函数:
def power_of_n(power,n): ans = n*n for i in power: ans = ans*n return ans
你想计算n的power次方(比如12的立方),但这里有两个明显的问题:
- 迭代对象错误:你传入的
power是整数(比如立方对应的3),但for i in power试图遍历这个整数,这直接触发了上面的TypeError。 - 计算逻辑偏差:初始
ans = n*n已经是n的平方了,再循环power次乘n,最终结果会是n^(2+power),完全不是你想要的n^power。
修复方案
这里给你两种实用的修复方式:
方案1:修正循环逻辑(手动实现幂运算)
把遍历整数改成遍历range(power)生成的序列,同时调整初始值为1,确保循环power次后得到正确的幂:
def power_of_n(power, n): ans = 1 # 循环power次,每次将ans乘以n for _ in range(power): ans *= n return ans
测试一下:power_of_n(3,12)会返回1728,正好是12的立方。
方案2:使用Python内置幂运算符(更简洁高效)
Python本身就有专门的幂运算符号**,直接用它可以一行搞定,而且内置运算经过优化,比手动循环效率更高:
def power_of_n(power, n): return n ** power
同样测试power_of_n(3,12),结果也是1728,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Shan
相关产品推荐
相关产品推荐

