我寫過一個函數,可以作爲一個計算器來使用。它適用於下面的變量。Python:如何避免在函數中編寫多個if/elifs?
但是我想要擴展它以處理15個不同的levels
值和15個不同的sales
和cost
值。該功能將按照以下級別應用不同的銷售和成本計算。 (因爲每個計算都適用於特定級別,所以計算可能會在函數外部定義)。
我可以爲15個級別中的每個級別編寫大量的if/elif語句,但這看起來不是Pythonic。有沒有一種方法可以通過編程來擴展這樣一個功能,以獲得更多的銷售額,等級和成本?
爲了清晰起見,輸出將與下面相同(取決於當然輸入的值),但函數應該能夠處理更多的值。
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)
Total Cost x_Cost y_Cost
0 384391 192135 192256
爲什麼不把成本和銷售價值列入清單? –
您需要在數據中查找模式。例如,它是否總是'cost1 + sale(1 + 3)* foo'。然後,您可以將銷售和成本價值放入數組中,並按位置讀取數據。 –
將銷售價值列入清單將修復該部分,但您如何確定使用哪些成本? –