我有一个列表,其中包含数字 (lijstkleur) 1、4、6、7。 我的范围也从 0 到 8。 现在我有以下代码:
for x in range(0, len(L), 1):
if x in lijstkleur == True:
self.label = Label(self.frame, text=string[x], fg="yellow", bg="red")
self.label.pack(side=LEFT)
else:
self.label = Label(self.frame, text=string[x], fg="white", bg="red")
self.label.pack(side=LEFT)
但是所有的数字都变白了,这个if语句有什么问题
请您参考如下方法:
无需使用 == True :
if x in lijstkleur:
表达式x in lijstkleur==True被解释为 (x in lijstkleur) and (lijstkleur == True) ;列表永远不会等于 bool 值 True因此你最终测试了something and False , 保证是 False反而。这叫做 comparison chaining , 使表达式像 10 < a < 20可能。
您可以简化您的 range()调用len(L) :
for x in range(len(L)):
无需重复 .pack()调用:
if x in lijstkleur:
self.label=Label(self.frame,text=string[x],fg="yellow",bg="red")
else:
self.label=Label(self.frame,text=string[x],fg="white",bg="red")
self.label.pack(side=LEFT)
