我的函数和参数代码有什么问题?
我想申请什么我已经了解的功能和参数,所以我想出了可以计算的学费(纯属假设)我的函数和参数代码有什么问题?
def renting_1(laptop, weeks): laptop = 5 * weeks
if weeks > 10:
laptop -= 120
elif weeks > 5:
laptop -= 50
return laptop
def renting_2(textbooks, number_of_textbooks, weeks):
textbooks = number_of_textbooks * 20 + (10 * weeks)
if weeks >= 26:
textbooks -= (5 * (weeks - 26))
return textbooks
def school_cost(cost, weeks):
cost = 200 * weeks
return cost
def total_cost(weeks, number_of_textbooks):
return renting_1(weeks) + renting_2(number_of_textbooks, weeks) + school_cost(weeks)
print total_cost(22, 4)
,当我运行它,我收到此
代码Traceback (most recent call last): File "python", line 22, in <module>
File "python", line 20, in total_cost
TypeError: renting_1() takes exactly 2 arguments (1 given)
有人可以解释,也许修复代码,所以我可以分析什么是错的?
回答:
从你得到的错误来看,你的用例似乎有些参数不是强制性的。您可以删除这些参数,也可以发送None作为附加参数或使用可选参数。
通过为它们设置默认值,可以在最后添加可选参数,如下所示。
参考:http://www.diveintopython.net/power_of_introspection/optional_arguments.html
def renting_1(weeks, laptop=None): laptop = 5 * weeks
if weeks > 10:
laptop -= 120
elif weeks > 5:
laptop -= 50
return laptop
def renting_2(number_of_textbooks, weeks, textbooks=None):
textbooks = number_of_textbooks * 20 + (10 * weeks)
if weeks >= 26:
textbooks -= (5 * (weeks - 26))
return textbooks
def school_cost(weeks, cost=None):
cost = 200 * weeks
return cost
def total_cost(weeks, number_of_textbooks):
return renting_1(weeks) + renting_2(number_of_textbooks, weeks) + school_cost(weeks)
print total_cost(22, 4)
回答:
在代码中的这一部分,renting_1(laptop, weeks)
需要两个参数,你只给一个。
def total_cost(weeks, number_of_textbooks): return renting_1(weeks) + renting_2(number_of_textbooks, weeks) + school_cost(weeks)
回答:
正是它说“renting_1()到底需要2个参数(1给出)”
所以你建的renting_1函数接受2个参数,(笔记本&周),但你只把它称为租用1(周)的一个论据。您需要为笔记本电脑的函数调用参数添加另一个值。
回答:
renting_1
被定义为接收2个参数laptop
和weeks
。
当您在total_cost
中使用它时,可以这样称呼它:renting_1(weeks)
您传递了一个参数。
所有调用都有此问题。有些事你不了解。
回答:
您不需要在参数中定义返回值。
您尤应不会覆盖与计算其它值
例如传入的参数,def renting_1(weeks)
是所有你需要
以上是 我的函数和参数代码有什么问题? 的全部内容, 来源链接: utcz.com/qa/259385.html