【问题标题】:Syntax error: cant assign to operator [closed]语法错误:无法分配给运算符 [关闭]
【发布时间】:2018-02-15 14:34:00
【问题描述】:
 def addOp(self):
        i = math.sqrt(-1) 
        addAnswer = (a + b*i) + (c + d*i) = (a + c) + (b + d)*i
        return addAnswer

当我运行代码时,“addAnswer”行出现错误... 我曾尝试在需要时输入 * 并调整括号,但没有帮助。下面的代码也是如此

def mutliplicationOp(self):
        multiAnswer =  (a + b*i) * (c + d*i) = (a*c - b*d) + (b*c + a*d)*i
        return multiAnswer

【问题讨论】:

  • 语法错误是有道理的。你认为它应该做什么?解方程?
  • 期望addAnswer会是什么?显示所需的输出
  • 我们仍然不知道为什么赋值行包含两个等号或者你希望它的语义是什么。真的,解释一下你想在那里发生什么。
  • 不要在 cmets 中详细说明 - 请edit您的问题是独立的。
  • 如果您希望True iff 两个表达式的计算结果相同,请注意c = a == b 使用单个等号进行赋值,使用两个等号进行比较,就像在许多现代编程语言中一样。跨度>

标签: python python-2.7 oop syntax-error


【解决方案1】:
def addOp(self):
        i = math.sqrt(-1)  # This will create a math domain error though...
        addAnswer = (a + b*i) + (c + d*i) = (a + c) + (b + d)*i
        return addAnswer

为什么这有两个作业? (a + b*i) + (c + d*i)(a + c) + (b + d)*i 等效。你只需要一个。您的第二段代码也是如此。做吧

def addOp(self):
        i = (-1)**0.5
        addAnswer = (a + c) + (b + d)*i
        return addAnswer

甚至更好

def addOp(self):
        return (a + c) + (b + d)*1j

对于乘法部分也是如此。或者,使用内置的complex 类型:

def addOp(self):
    return complex(a, b) + complex(c, d)

【讨论】:

    【解决方案2】:

    这是你想要做的吗?

    def function(c_a, c_b, operation):
        return {'+': c_a.__add__(c_b), 
                '*': c_a.__mul__(c_b), 
                '-': c_a.__sub__(c_b), 
                '/': c_a.__truediv__(c_b)
                }.get(operation, 'Operation "{}" not supported!'.format(operation))
    

    示例运行:

    print(function(complex(2, 2), complex(2, 2), '+'))  # -> (4+4j)
    print(function(complex(2, 2), complex(2, 2), '-'))  # -> 0j
    print(function(complex(2, 2), complex(2, 2), '*'))  # -> 8j
    print(function(complex(2, 2), complex(2, 2), '/'))  # -> (1+0j)
    print(function(complex(2, 2), complex(2, 2), '%'))  # -> Operation "%" not supported!
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 2014-07-01
      • 1970-01-01
      • 2017-02-13
      • 2021-04-06
      • 1970-01-01
      • 2015-04-29
      • 2019-05-24
      相关资源
      最近更新 更多