【问题标题】:Getting TypeError: 'int' object is not subscriptable [closed]获取TypeError:'int'对象不可下标[关闭]
【发布时间】:2020-10-06 06:21:12
【问题描述】:
def hourglassSum():
    for i in range(0,6):
        arr1=map(int,input().split())
        arr=list(arr1)
    sum=[]
for i in range(len(arr)-2):
        for j in range(len(arr)-2):
            sum.append(arr[i][j]+arr[i][j+1]+arr[i][j+2]+arr[i+1][j]+arr[i+2][j]+arr[i+2][j+1]+arr[i+2][j+2])

    maxi=max(sum)
    print(maxi)

hourglassSum()

此代码显示以下错误:

TypeError: 'int' object is not subscriptable

如何解决?

【问题讨论】:

  • 发布完整的错误信息
  • 请也提供此功能的目标
  • 另外,您的代码中似乎存在一些缩进问题
  • 这种类型的错误意味着您正在尝试执行类似 10[0] 或类似的操作。确保列表“arr”实际上是一个二维列表,否则你会得到这个错误。为此,我建议在创建“sum”变量后打印它
  • arr 只是一个列表(可以从arr=list(map(int,input().split())) 看到)。当您执行arr[i] 时,您会得到一个整数。因此,通过 arr[i][j] 您正在尝试访问不可能的 int

标签: python python-3.x


【解决方案1】:

我怀疑这就是你要找的东西:

def hourglassSum():
    arr = []
    for i in range(0,6):
        arr1=map(int,input().split())
        arr.append(list(arr1))
    sum=[]
    for i in range(len(arr)-2):
        for j in range(min(len(arr[i]), len(arr[i+1]), len(arr[i+2]))-2):
            sum.append(arr[i][j]+arr[i][j+1]+arr[i][j+2]+arr[i+1][j]+arr[i+2][j]+arr[i+2][j+1]+arr[i+2][j+2])

    maxi=max(sum)
    print(maxi)

两个音符:

(1) 你想坚持第一个循环的每次迭代,你所做的只是用每次迭代覆盖你的变量

(2) 在遍历基本列表元素的不同元素时 - 始终确保不会遇到索引越界异常 - 我认为你的方法是放入 6x6 元素 - 所以它只是为了减轻最终差异

【讨论】:

    猜你喜欢
    • 2017-07-15
    • 2012-02-21
    • 2018-08-07
    • 2023-04-02
    • 2017-11-10
    • 2023-03-20
    • 2015-07-31
    相关资源
    最近更新 更多