python - 使python函数输入一个列表
问题描述
我正在编写一个函数并想打开这个输入,
[], [], ["pepperoni", "pepperoni"], wings=[10, 20], drinks=["small"]
在函数 cost_calculator
问题是它不让我接受它,因为里面有翅膀和饮料这个词。尝试将其转换为列表会给我错误的语法。我也无法从输入中取出单词wings和drinks。我的代码:
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 可以是什么(按此顺序):
- 任意数量
[]
,每个代表一个披萨 - 一份浇头清单(显然这是可选的)
- 可选的命名列表(翅膀、饮料)
所以我们可以使用可变数量的 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)
推荐阅读
- android - RxAndroidBLE:映射器返回了一个空的 SingleSource
- javascript - 如何在 React JS 中启用/禁用数组中的元素?
- spring-integration - 队列大小的指标
- php - 有什么方法可以将字符串中的图像(带有图像的内容)放入 html 中?
- time-complexity - 所有用于计算算法运行时间的假设机器模型都相同吗?
- python - Django 和 SQLite:DurationField 算术
- reactjs - 即使使用箭头功能也无法设置状态
- angular - 在 Angular 中调用 document.documentElement.classList.add 有什么问题吗?
- postgresql - 如何查询版本化时间序列数据以获取可用的最新版本
- typescript - 将类型化对象的字段与 Typescript 中的原语进行比较的正确方法是什么?