使用Python中的字典创建变量

时间:2018-07-24 21:58:44

标签: python

我正在尝试改进我制作的一个小程序,因为它现在有很多复制的变量,只是修改了数字。是否有可能使变量进行特定的计算,而变量的名称取决于键,而计算方式取决于值?

下面是一段代码:

#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)")

1 个答案:

答案 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]}")