Tkinter错误。p中的随机语法错误

2024-10-01 19:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在我的代码中得到这个随机的语法错误,我不认为我应该得到一个。它只是突出显示了一个随机的空格,我尝试过改变多个东西(例如,变量名,语音标记的数量,将语音标记改为倒逗号,以及语音标记中有多少空格是从侧面插入的)

  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 )

Tags: lenwidthlabelgridrowstrgrooverelief
2条回答

简单错误:

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

我不知道问题出在哪里,但你可以用不同的方式写,让它更简短,更易读,也许这样就可以解决你的问题

可以使用

text = ", ".join(inventorylist)

并贴上标签

text = ", ".join(inventorylist)

Label_i.configure(text="In your inventory you have:\n{}".format(text))

然后你甚至不必使用len(inventorylist),因为它适用于inventorylist中任意数量的项目


编辑:

要每3项添加\n,可以首先创建包含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]将创建空列表,然后line2line3将有空字符串,并将",\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不会创建空行

相关问题 更多 >

    热门问题