Why is the code showing ‘int’ object is not subscriptable?

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])):

  for j in range(len(odd)):
    s =0
    for l in range(len(odd)):
        s = s+ odd[l]*k
        s = s+ odd[l]

When I run this code, it works perfectly fine for 1 iteration. But as soon as we move to next iteration, the code starts showing error:

TypeError: ‘int’ object is not subscriptable

in the line where I have declared k = l[i][1]. What’s causing this error and how can I solve it?


The line

for l in range(len(odd)):

assigns an int to l. Loops (and all other control structures for that matter) don’t introduce a new scope in Python, so that l is the exact same variable as the l you defined at the start. When k = l[i][1] is reached on the next iteration, you’re attempting to index an int, hence the error.

You’ll need to pick a different name for the variable in the for loop.