簡體   English   中英

在Python中使用字典創建變量

[英]Create variables using a dictionary in 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)")

在字典中獲取所有利潤計算的一種簡單方法是使用理解

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM