为何执行Python代码时出现TypeError: 'int' object is not iterable错误?
错误原因分析
核心问题
你遇到的TypeError: 'int' object is not iterable错误,根源在于**oddNumbers函数返回单个整数,而后续代码试图将其当作可迭代对象处理**。
具体细节
先看
oddNumbers函数的逻辑:def oddNumbers(l, r): for i in range(l,r): if(i%2!=0): return(i)这个函数在循环中找到第一个奇数后,立刻用
return(i)返回该整数,函数直接终止,不会继续查找后续的奇数。因此result变量最终是单个整数,而非包含所有奇数的可迭代序列(比如列表)。再看报错的代码行
'\n'.join(map(str, result)):map(str, result)要求result是可迭代对象(如列表、元组),但这里result是整数,整数不支持迭代,直接触发TypeError。join方法同样需要传入字符串组成的可迭代序列,无法接受单个整数。
修复方案
需要让oddNumbers函数返回所有符合条件的奇数组成的可迭代对象,以下两种方式可选:
方式1:收集所有奇数到列表后返回
def oddNumbers(l, r): odds = [] # 改成r+1,因为range是左闭右开,原代码会漏掉r值 for i in range(l, r+1): if i % 2 != 0: odds.append(i) return odds
方式2:用生成器(更节省内存)
def oddNumbers(l, r): # 改成r+1,避免漏掉r值 for i in range(l, r+1): if i % 2 != 0: yield i
内容的提问来源于stack exchange,提问作者Gaddipalli Vennela
相关产品推荐
相关产品推荐

