不明白为什么我不断收到“无法分配给操作员”错误

时间:2019-08-08 02:02:52

标签: 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 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

1 个答案:

答案 0 :(得分:1)

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

 flag1 = (True and flag2) = True

这是一个链式分配,它试图将True和表达式flag1都分配给True and flag2。您不能分配给该特定表达式:

>>> True and flag2 = True
  File "<stdin>", line 1
SyntaxError: can't assign to operator

由于这两个赋值都是简单的语句(根据Python语法),因此您可以 使用分号将两者同时加入

flag1 = True; flag2 = True

或者您可以使用元组拆包

flag1, flag2 = True, True

但是,最易读的方法是将两个分配都放在单独的行中。

flag1 = True
flag2 = True