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