TypeError: argument of type 'int' is not iterable

后端 未结 6 500
既然无缘
既然无缘 2021-01-12 05:42

I am getting this error when I run my program and I have no idea why. The error is occurring on the line that says \"if 1 not in c:\"

Code:

matrix =          


        
相关标签:
6条回答
  • 2021-01-12 06:04

    Well, if we closely look at the error, it says that we are looking to iterate over an object which is not iterable. Basically, what I mean is if we write 'x' in 1, it would throw error .And if we write 'x' in [1] it would return False

    >>> 'x' in 1
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: argument of type 'int' is not iterable
    
    >>> 'x' in [1]
    False
    

    So all we need to do it make the item iterable, in case of encountering this error.In this question, we can just make c by a list [c] to resolve the error. if 1 not in [c]:

    0 讨论(0)
  • 2021-01-12 06:07

    c is the row number, so it's an int. So numbers can't be in other numbers.

    0 讨论(0)
  • 2021-01-12 06:09

    I think you want if 1 != c: - that tests if c doesn't have the value 1.

    0 讨论(0)
  • 2021-01-12 06:17

    Based on the OP's comment It should print "t" if there is a 0 in a row and there is not a 1 in the row.

    change if 1 not in c to if 1 not in row

    for c, row in enumerate(matrix):
        if 0 in row:
            print("Found 0 on row,", c, "index", row.index(0))
            if 1 not in row: #change here
                print ("t")
    

    Further clarification: The row variable holds a single row itself, ie [0, 5, 0, 0, 0, 3, 0, 0, 0]. The c variable holds the index of which row it is. ie, if row holds the 3rd row in the matrix, c = 2. Remember that c is zero-based, ie the first row is at index 0, second row at index 1 etc.

    0 讨论(0)
  • 2021-01-12 06:25

    You're trying to iterate over 'c' which is just an integer, holding your row number.

    It should print "t" if there is a 0 in a row

    Then just replace the c with the row so it says:

    if 1 not in row:
    
    0 讨论(0)
  • 2021-01-12 06:28

    Here c is the index not the list that you are searching. Since you cannot iterate through an integer, you are getting that error.

    >>> myList = ['a','b','c','d']
    >>> for c,element in enumerate(myList):
    ...     print c,element
    ... 
    0 a
    1 b
    2 c
    3 d
    

    You are attempting to check if 1 is in c, which does not make sense.

    0 讨论(0)
提交回复
热议问题