在计算器中使用 "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)
昨天我问了一个关于我正在创建的文本计算器的计算功能的问题。我收到了一条回复,建议我使用 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)