我写了一个函数,可以作为计算器。它适用于以下变量。在
不过,我想把它扩展到处理15个不同的levels
值,以及15个不同的sales
和cost
值。该职能部门将对每个级别应用不同的销售和成本计算,如下所示。(由于每个计算都适用于特定级别,因此可以在函数外部定义计算。)
我可以为15个级别中的每一个编写大量if/elif语句,但这似乎不太像Python。有没有一种方法可以通过编程来扩展这样一个函数,以获得更多的销售额、级别和成本?在
为了清楚起见,输出将与下面相同(当然取决于输入的值),但是函数应该能够处理更多的值。在
levels_list = [4, 5] # ultimately 15 values in this list
sale4 = 18280 # ultimately 15 of these values
sale5 = 19180
sale6 = 22170
cost1 = 224 # and 15 of these values
cost2 = 335
cost3 = 456
def sales(level, foo, bar):
for level in levels_list:
if level == 4:
x = cost1 + sale4 * foo
y = cost2 + sale4 * bar
z = x + y
elif level == 5:
x = cost2 + sale5 * foo
y = cost3 + sale5 * bar
z = x + y
return pd.DataFrame({'Total Cost':[z], 'x_Cost':[x], 'y_Cost':[y]})
sales(5, 10, 10)
您可以在数据帧中组织数据,而不是多个测试,例如:
每一行都与一个级别相关联。那么你的功能是即时的:
^{pr2}$使用
dict
将相关值与每个级别关联起来是有意义的:这样
^{pr2}$levels_dict[level]
将为您提供销售额和两种计算成本:如果
level in range(15)
始终为真,那么使用列表将不需要密钥,您可以使用列表:虽然如果级别从4开始,那么这需要很多占位符。在
最好使用^{} 来确保始终按正确的顺序放置值:
这仍然与上述方法相同,但也允许您使用名称而不是顺序:
与其对每个成本和销售额使用单独的变量,不如根据level的可能值将它们组合成一个列表或字典。根据您的逻辑如何处理与哪些级别相关的成本,这可能允许您根据level的值访问适当的成本和销售条目
相关问题 更多 >
编程相关推荐