[英]making a python function input a list
我正在為一個函數編寫代碼,並想打開此輸入,
[], [], ["pepperoni", "pepperoni"], wings=[10, 20], drinks=["small"]
在一個函數cost_calculator中
問題在於它不讓我接受,因為其中有翅膀和飲料一詞。 嘗試將其轉換為列表會給我錯誤的語法。 我也無法從輸入中刪除“翅膀和飲料”一詞。 我的代碼:
def cost_calculator(x):
cost=0
drinks={"small":2.00,"medium":3.00,"large":3.50,"tub":3.75}
wings={10:5.00,20:9.00,40:17.50,100:48.00}
toppings={"pepperoni":1.00,"mushroom":0.50,"olive":0.50,"anchovy":2.00, "ham":1.50}
pizza={[]:13.00}
for i in x:
if i in pizza:
cost=cost+pizza[i]
elif i in toppings:
cost=cost+toppings[i]
elif i in drinks:
cost=cost+drinks[i]
elif i in wings:
cost=cost+wings[i]
else:
break
return cost
輸入時
cost_calculator([], [], ["pepperoni", "pepperoni"], wings=[10, 20], drinks=["small"])
它給我
cost_calculator() got an unexpected keyword argument 'wings'
我需要使用[]來顯示比薩的價值,
cost=cost+13.00
我該如何克服
不能完全確定函數的參數是什么,但是如果要使用關鍵字args,請使用
**
語法:
所以,我想我知道args可以是什么(按此順序):
[]
,每個代表一個披薩 # Tuple of var args and a dictionary of keyword args
def cost_calculator(*args, **kwargs):
drinks = {"small": 2.00, "medium": 3.00, "large": 3.50, "tub": 3.75}
wings = {10: 5.00, 20: 9.00, 40: 17.50, 100: 48.00}
toppings = {"pepperoni": 1.00, "mushroom": 0.50, "olive": 0.50, "anchovy": 2.00, "ham": 1.50}
cost = 0
coupon_value = 0.0
# args is a tuple of unnamed parameters
for a in args:
# [] has 0 length so it's a pizza
if 0 == len(a):
cost += 13.00
# Otherwise it must be toppings
else:
cost += sum([toppings[x] for x in a if x in toppings])
# Step through the keyword args
for key,value in kwargs.items():
if key == "drinks":
cost += sum([drinks[x] for x in value if x in drinks])
elif key == "wings":
cost += sum([wings[x] for x in value if x in wings])
elif key == "coupon":
coupon_value = value
else:
break
return cost * (1.0 - coupon_value)
c = cost_calculator([], [], ["pepperoni", "pepperoni"], wings=[10,10], drinks=["small"], coupon=0.1)
print(c)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.