我是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
答案 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