如何在python中使参数非特定?

如何在python中使参数非特定?,python,arguments,parameter-passing,default-value,Python,Arguments,Parameter Passing,Default Value,我用python编写了一个比萨饼店成本计算器的代码,它在下订单后计算成本,包括比萨饼、饮料、鸡翅和优惠券。它不一定要有所有这些论点,它会有各种各样的论点。这就是我被困的地方。 我有代码,但是我需要使用默认值的参数来创建它,这样插入的任何数量的参数都将生成有效的输出。(关于位置参数的内容) 代码如下: def比萨饼成本(比萨饼订单): 总数=0 对于pizorders中的订单: 总数+=13 如果“辣香肠”的顺序是: 总计=总计+(x.count(“辣香肠”)*1) 如果顺序为“蘑菇状”: 总计=

我用python编写了一个比萨饼店成本计算器的代码,它在下订单后计算成本,包括比萨饼、饮料、鸡翅和优惠券。它不一定要有所有这些论点,它会有各种各样的论点。这就是我被困的地方。 我有代码,但是我需要使用默认值的参数来创建它,这样插入的任何数量的参数都将生成有效的输出。(关于位置参数的内容)

代码如下:

def比萨饼成本(比萨饼订单):
总数=0
对于pizorders中的订单:
总数+=13
如果“辣香肠”的顺序是:
总计=总计+(x.count(“辣香肠”)*1)
如果顺序为“蘑菇状”:
总计=总计+(x.计数(“蘑菇”)*0.5)
如果按顺序为“橄榄色”:
总计=总计+(x.count(“橄榄”)*0.5)
如果“凤尾鱼”按顺序排列:
总计=总计+(x.计数(“凤尾鱼”)*2)
如果顺序为“火腿”:
总计=总计+(x.计数(“火腿”)*1.5)
返回总数
def饮料成本(DRI订单):
总数=0
对于订单中的订单:
如果订单==“小”:
总计=总计+(x.计数(“小”)*2)
如果订单==“中等”:
总计=总计+(x.计数(“中等”)*3)
如果订单==“大”:
总计=总计+(x.count(“大”)*3.5)
如果订单==“桶”:
总计=总计+(x.count(“桶”)*3.75)
返回总数
def wing_成本(wingorders):
总数=0
对于wingorders中的订单:
如果订单==10:
总数+=5
如果订单==20:
总数+=9
如果订单==40:
总数+=17.5
如果订单==100:
总数+=48
返回总数
def成本计算器(*比萨饼、*饮料、*翅膀、*优惠券):
总数=0
总+=比萨饼成本(比萨饼)
总+=饮料成本(饮料)
总+=机翼成本(机翼)
税=总额*0.0625
折扣=总额*优惠券
总额+=税金
总计-=折扣
返回总数
这就是错误:

TypeError回溯(最近一次调用)
比较函数中的~/opt/anaconda3/lib/python3.7/site packages/bwsi\u grader/\uuuu init\uuuu.py
110尝试:
-->111学生外出=学生(*fn_args,**fn_kwargs)
112例外情况除外,如e:
TypeError:cost_calculator()缺少3个必需的位置参数:“饮料”、“翅膀”和“优惠券”
在处理上述异常期间,发生了另一个异常:
StudentError回溯(最近一次呼叫上次)
在里面
1#执行此单元格为您的作业评分
2来自bwsi_分级器.python.pizza_商店导入分级器
---->3级分级机(成本计算器)
~/opt/anaconda3/lib/python3.7/site-packages/bwsi_grader/python/pizza_shop.py in grader(学生函数)
191对于披萨,拉链中的物品(标准披萨,标准订单):
192比较函数(student=student\u func,soln=soln,
-->193 fn_args=元组(比萨饼),fn_kwargs=项目)
194
范围内的i为195(1000):
比较函数中的~/opt/anaconda3/lib/python3.7/site packages/bwsi\u grader/\uuuu init\uuuu.py
111学生外出=学生(*fn_args,**fn_kwargs)
112例外情况除外,如e:
-->113 raise StudentError(f“\n填充\n\t{pad_indent(sig,ln=4)}\n导致以下错误:”
114 f“\n\t{type(e)。{u name}:{e}”
115 f“\n请在Jupyter中运行上述函数”
学生登记员:
使命感
student_函数([]))
产生以下错误:
TypeError:cost_calculator()缺少3个必需的位置参数:“饮料”、“翅膀”和“优惠券”
请在Jupyter笔记本中运行上面显示的函数,以获得错误的详细跟踪,并调试函数。

当您声明一个不使用默认参数的函数时,Python希望您的每个参数都必须有一个输入。默认参数将允许您不为参数添加任何内容

def成本\u计算器(比萨饼=[],饮料=[],翅膀=[],优惠券=0.0):
''您的代码在这里''
非默认参数称为位置参数,因为它们总是必须输入并且必须按正确的顺序输入

对于默认参数,应确保在进行函数调用时输入参数的名称:

cost_计算器(饮料=['small','small','large',],优惠券=0.2)

我认为这应该适用于分级代码。他们使用一种称为dictionary unpacking的方法,允许您将所有默认参数作为字典对象提交,按照惯例称为kwargs:

发布文本,而不是文本图像。如果您想了解未指定数量的位置参数,请查看@JosephSible:很抱歉,我对您的紧急评论表示歉意,我真的没有想到我会得到回复,因为这是一个如此大的平台。@Eric Truett感谢您提供的资源,我补充道“*”在我的论点之前,但我不认为它有效。我不确定这是否有效,因为评分员会提交许多随机参数,有或没有某些论点,如比萨饼、饮料等。我理解你的意思,但我的代码中没有任何东西可以放入,它必须只准备获得各种订单。我非常感谢你的支持帮助并希望你能进一步帮助我!@ah123412312你试过了吗?我展示给你的案例会成功,这样你就可以交上任何随机参数。请尝试一下,如果有错误,请告诉我。是的,我试过了,正如我所说的,我非常确定我自己不能将参数输入代码,这是评分员会做的。这就是错误演示:StudentError:调用student_函数([])