关于使用计算器中的“中性起点”修复减法和除法运算:在计算器中使用“中性起点”修复减法和除法运算 – Python

Fixing subtraction and division operations with “neutral starting point” in calculator - Python

昨天我问了一个关于我正在创建的文本计算器的计算功能的问题。我收到一个回复,建议我使用operator模块进行两个或多个操作数的Python式操作。

计算器使用一个函数计算所有操作。一种字典(operatorsDict),由四个条目组成,每个操作一个条目,存储每个操作的"预设"。执行函数时,将加载所选操作的预设。其中一个预设是"中性起点"。这是功能:

1
2
3
4
5
def Calculate():
    global result, operatorsDict  #result is the answer to the calculation and = 0 at this point
    opFunc, result = operatorsDict[operation] #loading presets from dictionary -
    for operand in operandList:
        result = opFunc(result, operand)

在这个设置中,乘法需要一个nsp值1:这样,它就不需要将result0乘以每个操作数,而不管操作数是多少,都会得到零,而是将一个操作数和操作数相乘。添加时不需要NSP。

然而,减法和除法需要NSP,两者都应该使用operandList[0]作为NSP,但这将导致当前系统停止工作。

对于需要第一个操作数nsp的操作(如减法和除法),是否有任何方法可以修改函数以使其正常工作?


如果你愿意的话,你可以用operandList[0]作为起点,当然只要operandList不是空的(当它是空的时候,你想做什么就由你决定)。

1
2
3
4
5
if not operandList:
    raise ValueError('Empty operand list')  # or whatever
result = operandList[0]
for operand in operandList[1:]
    result = opFunc(result, operand)