我试图将if语句放在for循环中。条件从数组中读取。 (在游戏中制作游戏......)
这是field_array
数组。
field_array = [(100, 100), (150, 100), (200, 100)]
这是for循环中的if语句。
for x in field_array:
if player_new_coord[0] >= field_array[num][0] and player_new_coord[0] <= field_array[num][0]+50:
if player_new_coord[1]+player_height >= field_array[num][1] and player_new_coord[1] <= field_array[num][1]+50:
print("farm")
num += 1
我收到以下错误。
2DFarmingSimulator.py", line 81, in Main
if player_new_coord[0] >= field_array[num][0] and player_new_coord[0] <= field_array[num][0]+50:
IndexError: list index out of range
Press any key to continue . . .
感谢您的时间和帮助。
答案 0 :(得分:1)
没有整个代码,我不知道如何定义或初始化num。当您将其用作列表的索引时,它显然具有错误的值。
但....你不需要列表中的索引!
您已经在遍历循环。 x是当前项目。
所以这应该工作(运行代码我创建了你使用但未在代码示例中定义的值,为它们分配我从空中挑选的值。此代码运行。)
field_array = [(100, 100), (150, 100), (200, 100)]
player_new_coord = [130,120]
player_height = 119
for x in field_array:
if player_new_coord[0] >= x[0] and player_new_coord[0] <= x[0]+50:
if player_new_coord[1]+player_height >= x[1] and player_new_coord[1] <= x[1]+50:
print("farm")
当然,你需要删除定义player_new_coord和player_height的行,并使用你需要的值。
答案 1 :(得分:0)
num应该在if语句中用作数组的索引之前进行初始化。由于num不存在,因此会产生索引错误。将num初始化为某个或0
答案 2 :(得分:0)
在您的代码段中,x
被分配(100, 100), (150, 100), (200, 100)
,但未使用此功能。此外,我们无法看到num
被设置为什么,因此我假设您的意思是将num
初始化为第一个索引并在每个循环上递增。
以下代码段会将x
分配给正确的索引,for
循环将在每次迭代后为您增加num
。
for num in range(len(field_array)):
if player_new_coord[0] >= field_array[num][0] and player_new_coord[0] <= field_array[num][0]+50:
if player_new_coord[1]+player_height >= field_array[num][1] and player_new_coord[1] <= field_array[num][1]+50:
print("farm")