1

我有一个包含数字 (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 语句有什么问题

4

2 回答 2

5

无需使用== True

if x in lijstkleur:

表达式x in lijstkleur==True被解释为(x in lijstkleur) and (lijstkleur == True); 列表永远不等于布尔值True,因此您最终something and False会进行测试,并保证是False。这称为比较链接,使表达式成为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)
于 2013-04-03T16:11:43.360 回答
1

您的条件没有评估您认为的方式。它正在这样做:

if (x in lijstkleur) and (lijstkleur==True):

的结果lijstkleur==True总是False,因为列表永远不等于布尔值,所以条件总是返回False。你想要的是这样的:

if x in lijstkleur:
于 2013-04-03T16:14:23.713 回答