【问题标题】:Can't assign to operator无法分配给操作员
【发布时间】:2012-08-17 12:39:58
【问题描述】:
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 行)

【问题讨论】:

  • num + i 返回一个值...如何将值分配给一个值?这就像写6 = 5
  • 为什么投反对票? OP 显然对作业的工作方式存在根本性的误解,已经发布了代码和错误消息,为什么不提供帮助呢? (我见过很多刚接触编程的人在这个问题上绊倒了)

标签: python python-2.7 variable-assignment


【解决方案1】:

你确定不想要:

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,但我更喜欢第一个版本(对我来说似乎更明确一点)。

【讨论】:

  • 我宁愿使用xrange(0, 1000, 5) 并测试x % 3 == 0。它将在更少的迭代中运行。
  • @IhorKaharlichenko -- 当然,xrange 更适合 python2.x(OP 正在使用)。然而,未来是 python 3.x,所以我喜欢编写我的代码来尽可能地使用这两者。对于这样的事情,xrangerange 之间的差异可能可以忽略不计。
  • 嗯,是的,为了 py3k 的可移植性,range()xrange() 更好。虽然将 3 换成 5 会产生影响。
  • @IhorKaharlichenko -- 你是对的。我刚刚注意到您的第一条评论中的xrange,而不是实际重要的部分:)。感谢您的意见。
  • @Levon -- 谢谢。始终如一地写出高质量帖子的人给出积极的反馈总是很好的:-)
【解决方案2】:
num + i = num <--- Adding Up Numbers Divisable by 3 & 5...

你不能给表达式赋值。

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

【讨论】:

    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2019-11-11
    相关资源
    最近更新 更多