昨天我问了一个关于我正在创建的文本计算器的计算功能的问题。我收到一条回复,建议我使用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的第一个操作数的操作,如减法和除法?
答案 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)