Python代码迭代运行报错'int' object is not subscriptable如何解决
错误原因
核心问题是变量名冲突:
- 你最初定义了存储输入数据的列表变量,命名为
l - 后续计算
s的内层循环中,你将迭代变量也命名为l:for l in range(len(odd))
第一轮外层循环运行到这个内层循环时,l会被覆盖为range生成的整数值,等到第二轮外层循环执行k = int(l[i][1])时,l已经不是初始的列表类型,整数类型不支持下标访问,就触发了对应报错。
解决方案
将内层循环的迭代变量改为和外层列表不冲突的名称即可,比如修改为m:
x = int(input()) l =[] for i in range(x): l.append(input().split(" ")) for i in range(x): k = int(l[i][1]) sum = int(l[i][2]) odd =[] for j in range(int(l[i][0])): odd.append(1+2*j) for j in range(len(odd)): s =0 # 把原迭代变量l改成m,避免覆盖外层列表 for m in range(len(odd)): if(odd[j]==odd[m]): s = s+ odd[m]*k else: s = s+ odd[m] if(s==sum): print(odd[j]) break
补充建议:日常写代码时尽量避免使用单字符作为含义差异大的变量名,比如存储输入的列表可以命名为
input_list,迭代变量用idx、item这类语义更明确的名称,能从根源上避免这类变量名冲突问题。
内容的提问来源于stack exchange,提问作者Agrim Sood
相关产品推荐
相关产品推荐

