Python 类型错误:';布尔';即使使用另一个变量,对象也不可iterable
有史以来的第一篇帖子:) 我知道if语句返回一个布尔值。但我不是用它来迭代列表,我用的是x。我只想将所有其他变量(type=IntVar)设置为0,但I必须保持为1。提前谢谢,我第一次来这里Python 类型错误:';布尔';即使使用另一个变量,对象也不可iterable,python,python-3.x,Python,Python 3.x,有史以来的第一篇帖子:) 我知道if语句返回一个布尔值。但我不是用它来迭代列表,我用的是x。我只想将所有其他变量(type=IntVar)设置为0,但I必须保持为1。提前谢谢,我第一次来这里 def clear(): variables=[var, var0, var1, var2, var3, var4,var5,var6, var7, var8] for i in variables: if i.get() == 1: x = vari
def clear():
variables=[var, var0, var1, var2, var3, var4,var5,var6, var7, var8]
for i in variables:
if i.get() == 1:
x = variables.index(i)
for y in variables in range(0,x-1) and range(x,9):
y.set(0)
我的原始代码有500行,所以在这里完整发布并不理想。
完全回溯:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Thomas Jence\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "G:\Mrs. Odewale\Computing coursework\options.py", line 187, in clear9
for y in variables in range(0,x-1) and range(x,9):
TypeError: 'bool' object is not iterable
不熟悉python,但作为一种标准的编码实践,在迭代数组时,您永远不希望更改数组中的值 而是创建一个与现有数组具有相同值的新数组。在设置新数组的值时迭代旧数组,然后在循环结束后,将您的数组设置为新数组的新值
for y in variables in range(0,x-1) and range(x,9):
解释为(用括号分开并按行排列,以明确分组):
然后,最里面的括号确定范围(0,x-1)
是否为空,如果为空则使用它,如果为空则使用范围(x,9)
。然后,下一层测试变量
是否在“获胜”范围内
。然后你有效地做到:
for y in False:
因为变量
是一个列表
,所以它肯定不在任何范围内
我不知道您想做什么,但您需要重新考虑这一行。您必须格式化代码。没人能读懂你写的东西。对不起,我现在才学会怎么读。。我的错…不知道这是什么语言,但是var,var0,var1都没有定义吗?如果是这样的话,我不希望您对它们执行I.get()。我们不需要查看所有代码。相反,您需要创建重现此问题的。您的问题来自于范围(0,x-1)和范围(x,9)中变量y的这一行
:
。那是什么?
for y in False: