Ошибка Ткинтера. случайная синтаксическая ошибка в странном месте - PullRequest
0 голосов
/ 16 октября 2019

Я продолжаю получать эту случайную синтаксическую ошибку в своем коде, где я не думаю, что я должен ее получить. он просто выделяет случайное пространство, и я попытался изменить несколько вещей (например, имена переменных, количество речевых меток, изменение речевых меток на кавычки и сколько пробелов в речевых метках сбоку)

  if len(inventorylist) == 0:
       Label_i = Label( windowi, relief = "groove", width = 50 )
       Label_i.grid( row = 1, column = 76, rowspan = 50, columnspan = 100, padx = ( 10, 10 ) )
       Label_i.configure( text = """In your inventory you have:
       """ )

   elif len(inventorylist) == 5:
       Label_i = Label( windowi, relief = "groove", width = 50 )
       Label_i.grid( row = 1, column = 76, rowspan = 50, columnspan = 100, padx = ( 10, 10 ) )
       inv0 = str(inventorylist[0])
       inv1 = str(inventorylist[1])
       inv2 = str(inventorylist[2])
       inv3 = str(inventorylist[3])
       inv4 = str(inventorylist[4])
       Label_i.configure( text = """In your inventory you have:
       """ + inv0 + """, """ + inv1 + """, """ + inv2 + """, """ +
       """""" + inv3 + """, """ + inv4 )


   elif len(inventorylist) == 6:
       Label_i = Label( windowi, relief = "groove", width = 50 )
       Label_i.grid( row = 1, column = 76, rowspan = 50, columnspan = 100, padx = ( 10, 10 ) )
       inv0 = str(inventorylist[0])
       inv1 = str(inventorylist[1])
       inv2 = str(inventorylist[2])
       inv3 = str(inventorylist[3])
       inv4 = str(inventorylist[4])
       inv5 = str(inventorylist[5])
       Label_i.configure( text = """In your inventory you have:
       """ + inv0 + """, """ + inv1 + """, """ inv2 + """, """ +
       """""" + inv3 + """, """ + inv4 + """, """ + inv5 )

Ошибка, которую я получаю, является синтаксической и выделяет эту область:

elif len(inventorylist) == 6:
    Label_i = Label( windowi, relief = "groove", width = 50 )
    Label_i.grid( row = 1, column = 76, rowspan = 50, columnspan = 100, padx = ( 10, 10 ) )
    inv0 = str(inventorylist[0])
    inv1 = str(inventorylist[1])
    inv2 = str(inventorylist[2])
    inv3 = str(inventorylist[3])
    inv4 = str(inventorylist[4])
    inv5 = str(inventorylist[5])
    Label_i.configure( text = """In your inventory you have:
    """ + inv0 + """, """ + inv1 + """, """ inv2 + """, """ +
    """""" + inv3 + """, """ + inv4 + """, """ *this space here* + inv5 )

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Я не знаю, в чем проблема, но вы могли бы написать ее по-другому и сделать ее короче, более читабельной и, возможно, затем устранить вашу проблему.

Вы можете объединить инвентарь, используя

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 не будет создавать пустые строки.

0 голосов
/ 16 октября 2019

Простая ошибка:

elif len(inventorylist) == 6:
    Label_i = Label( windowi, relief = "groove", width = 50 )
    Label_i.grid( row = 1, column = 76, rowspan = 50, columnspan = 100, padx = ( 10, 10 ) )
    inv0 = str(inventorylist[0])
    inv1 = str(inventorylist[1])
    inv2 = str(inventorylist[2])
    inv3 = str(inventorylist[3])
    inv4 = str(inventorylist[4])
    inv5 = str(inventorylist[5])
    Label_i.configure( text = """In your inventory you have:
    """ + inv0 + """, """ + inv1 + """, """ +inv2 + """, """ +
    """""" + inv3 + """, """ + inv4 + """, """ *this space here* + inv5 )

Вам нужно +inv2 во второй последней строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...