我正在尝试改进我制作的一个小程序,因为它现在有很多复制的变量,只是修改了数字。是否有可能使变量进行特定的计算,而变量的名称取决于键,而计算方式取决于值?
下面是一段代码:
#Product Retail Price
product_retail_price = float(input("Valor do produto na loja em Reais (Formato 00.00): "))
#Costs
product_cost = float(input("Valor do produto no fornecedor em Reais (Formato 00.00): "))
cpa = float(input("Custo por aquisição (Formato 00.00): "))
rrp_divided = product_retail_price / 100
fee_shopify = rrp_divided*2
fee_mercadopago = rrp_divided*4.99
fee_dictionary = {2:2.03,3:4.06,4:6.09,5:7.64,6:8.92,7:10.06,8:10.62,9:11.23,10:12.41,11:13.60,12:14.80,15:18.47,18:22.23,24:23.83}
# for keys, values in fee_dictionary.values():
"""
fee_finance_2 = rrp_divided*2.03
fee_finance_3 = rrp_divided*4.06
fee_finance_4 = rrp_divided*6.09
fee_finance_5 = rrp_divided*7.64
fee_finance_6 = rrp_divided*8.92
fee_finance_7 = rrp_divided*10.06
fee_finance_8 = rrp_divided*10.62
fee_finance_9 = rrp_divided*11.23
fee_finance_10 = rrp_divided*12.41
fee_finance_11 = rrp_divided*13.60
fee_finance_12 = rrp_divided*14.80
fee_finance_15 = rrp_divided*18.47
fee_finance_18 = rrp_divided*22.23
fee_finance_24 = rrp_divided*23.83
"""
我想做的是创建多个变量,如底部的变量,但无需实际复制和粘贴它们并更改数字。我已将键指定为每个变量末尾的数字,而该值是该变量内部的计算应除以的数字。
代码的后半部分也需要改进,我想使用类似的原理。你们中的任何人都可以建议最好的方法吗?
#Calculations
parcelas = int(input("Número de parcelas sem juros (Formato: 0-24): "))
base_profit = round(product_retail_price - product_cost - fee_shopify - fee_mercadopago - cpa, 2)
profit_2 = round(base_profit - fee_finance_2 - cpa, 2)
profit_3 = round(base_profit - fee_finance_3 - cpa, 2)
profit_4 = round(base_profit - fee_finance_4 - cpa, 2)
profit_5 = round(base_profit - fee_finance_5 - cpa, 2)
profit_6 = round(base_profit - fee_finance_6 - cpa, 2)
profit_7 = round(base_profit - fee_finance_7 - cpa, 2)
profit_8 = round(base_profit - fee_finance_8 - cpa, 2)
profit_9 = round(base_profit - fee_finance_9 - cpa, 2)
profit_10 = round(base_profit - fee_finance_10 - cpa, 2)
profit_11 = round(base_profit - fee_finance_11 - cpa, 2)
profit_12 = round(base_profit - fee_finance_12 - cpa, 2)
profit_15 = round(base_profit - fee_finance_15 - cpa, 2)
profit_18 = round(base_profit - fee_finance_18 - cpa, 2)
profit_24 = round(base_profit - fee_finance_24 - cpa, 2)
#Print Values
print("\n")
if parcelas in [0,1]:
print(f"Lucro à vista: R${base_profit}")
elif parcelas == 2:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
elif parcelas == 3:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
elif parcelas == 4:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
elif parcelas == 5:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
elif parcelas == 6:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
elif parcelas == 7:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
elif parcelas == 8:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
print(f"Lucro parcelado 8x: R${profit_8}")
elif parcelas == 9:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
print(f"Lucro parcelado 8x: R${profit_8}")
print(f"Lucro parcelado 9x: R${profit_9}")
elif parcelas == 10:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
print(f"Lucro parcelado 8x: R${profit_8}")
print(f"Lucro parcelado 9x: R${profit_9}")
print(f"Lucro parcelado 10x: R${profit_10}")
elif parcelas == 11:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
print(f"Lucro parcelado 8x: R${profit_8}")
print(f"Lucro parcelado 9x: R${profit_9}")
print(f"Lucro parcelado 10x: R${profit_10}")
print(f"Lucro parcelado 11x: R${profit_11}")
elif parcelas in [12,13,14]:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
print(f"Lucro parcelado 8x: R${profit_8}")
print(f"Lucro parcelado 9x: R${profit_9}")
print(f"Lucro parcelado 10x: R${profit_10}")
print(f"Lucro parcelado 11x: R${profit_11}")
print(f"Lucro parcelado 12x: R${profit_12}")
elif parcelas in [15,16,17]:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
print(f"Lucro parcelado 8x: R${profit_8}")
print(f"Lucro parcelado 9x: R${profit_9}")
print(f"Lucro parcelado 10x: R${profit_10}")
print(f"Lucro parcelado 11x: R${profit_11}")
print(f"Lucro parcelado 12x: R${profit_12}")
print(f"Lucro parcelado 15x: R${profit_15}")
elif parcelas in [18,19,20,21,22,23]:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
print(f"Lucro parcelado 8x: R${profit_8}")
print(f"Lucro parcelado 9x: R${profit_9}")
print(f"Lucro parcelado 10x: R${profit_10}")
print(f"Lucro parcelado 11x: R${profit_11}")
print(f"Lucro parcelado 12x: R${profit_12}")
print(f"Lucro parcelado 15x: R${profit_15}")
print(f"Lucro parcelado 18x: R${profit_18}")
else:
print(f"Lucro à vista: R${base_profit}")
print(f"Lucro parcelado 2x: R${profit_2}")
print(f"Lucro parcelado 3x: R${profit_3}")
print(f"Lucro parcelado 4x: R${profit_4}")
print(f"Lucro parcelado 5x: R${profit_5}")
print(f"Lucro parcelado 6x: R${profit_6}")
print(f"Lucro parcelado 7x: R${profit_7}")
print(f"Lucro parcelado 8x: R${profit_8}")
print(f"Lucro parcelado 9x: R${profit_9}")
print(f"Lucro parcelado 10x: R${profit_10}")
print(f"Lucro parcelado 11x: R${profit_11}")
print(f"Lucro parcelado 12x: R${profit_12}")
print(f"Lucro parcelado 15x: R${profit_15}")
print(f"Lucro parcelado 18x: R${profit_18}")
print(f"Lucro parcelado 24x: R${profit_24}")
print("\n")
print("AVISO: Lucro calculado usando as taxas atuais do MercadoPago (23/07/2018)")
编辑:
错误
NameError Traceback (most recent call last)
<ipython-input-2-6836971e136f> in <module>()
21
22 profit = {n: round(base_profit - (rrp_divided * fee_dictionary[n]) - cpa, 2)
---> 23 for n in fee_dictionary.keys()}
24
25 print(f"Lucro à vista: R${base_profit}")
<ipython-input-2-6836971e136f> in <dictcomp>(.0)
21
22 profit = {n: round(base_profit - (rrp_divided * fee_dictionary[n]) - cpa, 2)
---> 23 for n in fee_dictionary.keys()}
24
25 print(f"Lucro à vista: R${base_profit}")
NameError: name 'rrp_divided' is not defined
最终版本看起来更好:D:
#Product Retail Price
product_retail_price = float(input("Valor do produto na loja em Reais (Formato 00.00): "))
#Costs
product_cost = float(input("Valor do produto no fornecedor em Reais (Formato 00.00): "))
cpa = float(input("Custo por aquisição (Formato 00.00): "))
fee_shopify = (product_retail_price / 100)*2
fee_mercadopago = (product_retail_price / 100)*4.99
base_profit = round(product_retail_price - product_cost - fee_shopify - fee_mercadopago - cpa, 2)
rrp_divided = (product_retail_price / 100)
parcelas = int(input("Número de parcelas sem juros: "))
while True:
if parcelas in [1,13,14,16,17,19,20,21,22,23]:
print("Número de parcelas incorreto.")
parcelas = int(input("Número de parcelas sem juros: "))
else:
break
fee_dictionary = {2:2.03,3:4.06,4:6.09,5:7.64,6:8.92,7:10.06,8:10.62,9:11.23,10:12.41,11:13.60,12:14.80,15:18.47,18:22.23,24:23.83}
profit = {n: round(base_profit - (rrp_divided * fee_dictionary[n]) - cpa, 2)
for n in fee_dictionary.keys()}
print("\n")
print(f"Lucro à vista: R${base_profit}")
for n in range(2, parcelas + 1):
print(f"Lucro parcelado {n}x: R${profit[n]}")
print("\n")
print("AVISO: Lucro calculado usando as taxas atuais do MercadoPago (23/07/2018)")
我的词典中可以有一个空键吗?一个什么都不显示的东西?
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-8-ea0c27a58e66> in <module>()
28 print(f"Lucro à vista: R${base_profit}")
29 for n in range(2, parcelas + 1):
---> 30 print(f"Lucro parcelado {n}x: R${profit[n]}")
31
32 print("\n")
KeyError: 13
最终版本:
#Inputs
product_retail_price = float(input("Valor do produto na loja em Reais (Formato 00.00): "))
product_cost = float(input("Valor do produto no fornecedor em Reais (Formato 00.00): "))
cpa = float(input("Custo por aquisição (Formato 00.00): "))
parcelas = int(input("Número de parcelas sem juros: "))
#Calculations
fee_shopify = (product_retail_price / 100)*2
fee_mercadopago = (product_retail_price / 100)*4.99
base_profit = round(product_retail_price - product_cost - fee_shopify - fee_mercadopago - cpa, 2)
rrp_divided = (product_retail_price / 100)
while True:
if parcelas in [1,13,14,16,17,19,20,21,22,23]:
print("Número de parcelas incorreto.")
parcelas = int(input("Número de parcelas sem juros: "))
else:
break
fee_dictionary = {2:2.03,3:4.06,4:6.09,5:7.64,6:8.92,7:10.06,8:10.62,9:11.23,10:12.41,11:13.60,12:14.80,13:0,14:0,15:18.47,16:0,17:0,18:22.23,19:0,20:0,21:0,22:0,23:0,24:23.83}
profit = {n: round(base_profit - (rrp_divided * fee_dictionary[n]) - cpa, 2)
for n in fee_dictionary.keys()}
#Print
print("\n")
print(f"Lucro à vista: R${base_profit}")
for n in range(2, parcelas + 1):
print(f"Lucro parcelado {n}x: R${profit[n]}")
print("\n")
print("AVISO: Lucro calculado usando as taxas atuais do MercadoPago (23/07/2018)")
答案 0 :(得分:0)
在dict中获取所有利润计算的一种简单方法是使用理解力
profit = {n: round(base_profit - (rrp_divided * fee_dictionary[n]) - cpa, 2)
for n in fee_dictionary.keys()}
要打印利润> = 2,可以使用循环和范围。
print(f"Lucro à vista: R${base_profit}")
for n in range(2, parcelas + 1):
print(f"Lucro parcelado {n}x:: R${profit[n]}")