Python Don';我不明白为什么我总是得到';can';t分配给运算符';错误

Python Don';我不明白为什么我总是得到';can';t分配给运算符';错误,python,Python,我是python新手,我通过做一个练习作业来学习,这个练习作业查看数字列表,忽略出现在6和9之间的数字,包括6和9。然后,它返回每个其他数字的总和 在制作程序时,我遇到一个“无法分配给操作员”错误。我试过阅读类似的答案,但我不太明白为什么我总是出错 arr = [4, 5, 6, 7, 8, 9, 9] flag1 = True flag2 = True total = 0 for num in arr: while num != 6: flag1 = True and

我是python新手,我通过做一个练习作业来学习,这个练习作业查看数字列表,忽略出现在6和9之间的数字,包括6和9。然后,它返回每个其他数字的总和

在制作程序时,我遇到一个“无法分配给操作员”错误。我试过阅读类似的答案,但我不太明白为什么我总是出错

arr = [4, 5, 6, 7, 8, 9, 9]
flag1 = True
flag2 = True
total = 0
for num in arr:
    while num != 6:
        flag1 = True and flag2 = True
    while flag1 == True and flag2 == True:
        total = total + num
        break
    if num == 6:
        flag1 = True and flag2 = False
    while flag1 == True and flag2 == False:
        total = total + 0
        break
    if num == 9:
        flag1 = True and flag2 = True
print(total)
错误发生在第7行,它说:

    flag1 = True and flag2 = True
           ^
SyntaxError: can't assign to operator

问题在于
flag1=True和flag2=True
并不意味着“分配给
flag1
,然后分配给
flag2
”。它被解析为

 flag1 = (True and flag2) = True
这是一种链式赋值,尝试将
True
赋值给
flag1
和表达式
True和flag2
。无法将以下内容分配给此特定表达式:

>>> True and flag2 = True
  File "<stdin>", line 1
SyntaxError: can't assign to operator
或者可以使用元组解包

flag1, flag2 = True, True
然而,最具可读性的选择是将两个赋值放在单独的行上

flag1 = True
flag2 = True

您不能使用
加入工作分配。你到底想达到什么目的?如果
num
6
flag1,flag2=True,True
@AvinashRaj或
flag1=flag2=True
,那么在第一个
过程中,您将陷入一个无休止的循环中,但代码的其余部分无论如何都没有多大意义;flag2=True
。但是为了可读性,您应该像在循环之前一样,将每个赋值放在单独的一行上。注意:即使在这被修复之后,您也不会在第一个
循环中修改
num
,而
循环中,因此如果
num
不是
6
,则该循环是无限的。基本上,这段代码的所有内容都被破坏了,但是一旦修复了明显无效的语法,这是第一件会被破坏的事情。试着做一个while语句来确保flag1和flag2是真的怎么样?我试着写‘whileflag1==True;flag2==True:'但我有一个语法错误,这些不是赋值
while flag1==True和flag2==True
是完全有效的,因为
flag1==True和flag2==True
是一个布尔表达式(尽管在flag1和flag2:
中,它的书写方式更为惯用
;在比较中很少涉及布尔文字)。
flag1 = True
flag2 = True