用计算器中的“中性起点”修复减法和除法运算 - Python

时间:2015-01-24 02:00:29

标签: python calculator division subtraction

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

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

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)乘以每个操作数,而不管是什么,它都会产生零,它将一个操作数与操作数相乘。添加不需要NSP。

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

有没有办法可以修改函数使其适用于需要NSP的第一个操作数的操作,如减法和除法?

1 个答案:

答案 0 :(得分:1)

如果您愿意,您可以始终使用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)