Я не знаю, в чем проблема, но вы могли бы написать ее по-другому и сделать ее короче, более читабельной и, возможно, затем устранить вашу проблему.
Вы можете объединить инвентарь, используя
text = ", ".join(inventorylist)
и поместите в Label
text = ", ".join(inventorylist)
Label_i.configure(text="In your inventory you have:\n{}".format(text))
, и тогда вам даже не нужно будет использовать len(inventorylist)
, потому что это будет работать для любого количества элементов в inventorylist
РЕДАКТИРОВАТЬ:
, чтобы добавить \n
каждые 3 элемента, вы можете сначала создать строки из 3 элементов
line1 = ", ".join(inventorylist[0:3])
line2 = ", ".join(inventorylist[3:6])
line3 = ", ".join(inventorylist[6:9])
и позже соединить строку с помощью "\n"
или ",\n"
text = ",\n".join([line1, line2, line3])
если у вас есть только 3 элемента, тогда [3:9]
и [6:9]
создадут пустые списки, а затем line2
и line3
будут иметь пустые строки и добавят ",\n"
для пустых строк, но это не выглядит хорошо - но вы можете использовать filter(None, list)
для удаления пустых элементов из списка.
text = ",\n".join(filter(None, [line1, line2, line3]))
inventorylist = ['a', 'b', 'c', 'd', 'e']
line1 = ", ".join(inventorylist[0:3])
line2 = ", ".join(inventorylist[3:6])
line3 = ", ".join(inventorylist[6:9])
text = ",\n".join(filter(None, [text1, text2, text3]))
print(text)
Если вы ожидаете больше элементовв инвентаре вы можете использовать for
-loop с range(start, stop, step)
и step = 3
inventorylist = ['a', 'b', 'c', 'd', 'e', 'f']
all_lines = []
for i in range(0, len(inventorylist), 3):
line = ", ".join(inventorylist[i:i+3])
all_lines.append(line)
text = ",\n".join(all_lines)
print(text)
Эта версия не нуждается в filter
, потому что for
-loop не будет создавать пустые строки.