无法分配给运营商

时间:2012-08-17 12:39:58

标签: python python-2.7 variable-assignment

i = 0
num = 0
while i <= 1000:
    if i % 3 and i % 5 == 0:
        num + i = num <--- Adding Up Numbers Divisable by 3 & 5...
    i += 1
print num

错误: * 无法分配给运营商(第5行)

2 个答案:

答案 0 :(得分:10)

您确定不想要:

num = num + i

或等效地:

num += i

请注意,使用sumrange和生成器表达式可以更轻松地完成此操作:

sum( x for x in range(0,1000,5) if x % 3 == 0 )
                            #^only take every 5th element (0, 5, 10, 15 ...)
                                    #^ Also only take elements divisible by 3

如果您计划仅在python 2.x上运行此代码,则可以在上面的表达式中将range更改为xrange。此外,在阅读其他人的代码时,您有时会在这种类型的上下文中看到if x % 3 == 0写为if not x % 3,但我更喜欢第一个版本(对我来说似乎更明确一些)。

答案 1 :(得分:2)

num + i = num <--- Adding Up Numbers Divisable by 3 & 5...

您无法为表达式指定值。

另外,为什么不每次只添加5并检查它是否可以被3整除?你已经知道它可以被5 ...

整除