在计算器中使用 "neutral starting point" 修复减法和除法运算 - Python

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

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

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

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:这样一来,不是将 result (0) 乘以每个操作数(无论如何都会产生零),而是将 1 与操作数相乘。添加不需要 NSP。

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

有什么方法可以修改该函数,使其适用于需要第一个操作数的 NSP 的运算,例如减法和除法?

如果您愿意,您始终可以使用 operandList[0] 作为起点,当然只要 operandList 不为空(由您决定 空的)。

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