Python 3.4 TypeError:类型为';int';这是不可容忍的

Python 3.4 TypeError:类型为';int';这是不可容忍的,python,arrays,Python,Arrays,我有一个数组,数组中的每个位置代表一个停车位。数组(或停车场)中每个位置的值表示停车点(汽车、摩托车等)中的内容。showSpots功能应显示特定车辆所在的所有点。例如,showSpots(CAR)(其中CAR=1)应显示包含值1的所有点(或数组中的位置) 然而,当我运行代码时,我得到了一个“TypeError:type'int'的参数不可iterable'on line'如果holder在parkingLot[x]:” 为什么会出现此错误,如何修复 我的代码: from random impo

我有一个数组,数组中的每个位置代表一个停车位。数组(或停车场)中每个位置的值表示停车点(汽车、摩托车等)中的内容。showSpots功能应显示特定车辆所在的所有点。例如,showSpots(CAR)(其中CAR=1)应显示包含值1的所有点(或数组中的位置)

然而,当我运行代码时,我得到了一个“TypeError:type'int'的参数不可iterable'on line'如果holder在parkingLot[x]:”

为什么会出现此错误,如何修复

我的代码:

from random import *

parkingLot = [0, 1, 0, 2, 0, 0, 1]

EMPTY = 0
CAR = 1
MOTORCYCLE = 2

def showSpots(holder):
    for x in range(0, 6):
        if holder in parkingLot[x]:
            print(x)

def main():
    print("There are cars in lots:")
    showSpots(CAR)
    print("There are motorcycles in lots:")
    showSpots(MOTORCYCLE)

main()

parkingLot[x]
是一个单整数,但
中的
需要一个序列(即列表、元组、字典等)

如果holder==parkingLot[x]:
,我想您需要
。通过在
中执行
,Python试图遍历
parkingLot[x]
并检查
holder
是否在其中。显然,由于您不能执行列表(1)
,因此会出现一个错误。

如果holder==parkingLot[x]
,则应该是
。当您在中使用时,它意味着您正在搜索序列中的某些内容,即列表、元组或字典


对于整数,应使用
=

TerryA对错误的看法完全正确

在Python中,通过使用内置函数来处理列表和其他可重用项,而不是直接操作列表,可以大大降低此类错误的可能性

在这种情况下,您可以使用列表理解为您构建数据集。例如:

def showSpots(holder):
  for space in [ index for index,value in enumerate(parkingLot) if value == holder ]:
    print (space)

enumerate
函数将您的输入转换为索引/值对,您可以使用这些索引/值对构建一个只包含您关心的数据的列表。因为您永远不需要直接操作输入列表,因此无需担心列表大小,也不可能混合可输入值和不可输入值。

@ZacharyB48265没问题。一定要接受答案:)