В функции check_harvest()
длина словаря growing
может не совпадать с длиной списка grown
.
plant()
добавит amount
элементов к growing
, однако, только один элемент будет добавлен к grown
. Таким образом, если amount
больше единицы, длина словаря и списка будет расходиться.
Затем check_harvest()
выполняет итерацию по длине growing
, которая может быть длиннее grown
, что приводит к попытке доступа к элементу в grown
за пределами списка.
Это может решить проблему, если вы отступите в две строки:
grown.append("tomato_" + str(tomato_id)) #this list is so I can run a for loop using numbers (there's probably a better way to do this idk)
tomato_id += 1
так, что они находятся внутри цикла for:
for i in range(amount):
if tomato_seeds > 0:
tomato_seeds -= 1
tomato_planted += 1
growing["tomato_" + str(tomato_id)] = turn + 5 #this creates a library that contains tomatoes and their turn of harvest
grown.append("tomato_" + str(tomato_id)) #this list is so I can run a for loop using numbers (there's probably a better way to do this idk)
tomato_id += 1
но я не уверен, так как я не совсем понимаю ваш код.