Python 同时运行和返回两个函数的问题
我不完全确定我的程序出了什么问题,我正在尝试返回Python 同时运行和返回两个函数的问题,python,Python,我不完全确定我的程序出了什么问题,我正在尝试返回get_paint_info和calc_paint_area,但输出要么是第一个函数,要么是第二个函数。有什么问题吗 从IPython.display导入显示,HTML 从ipywidgets导入交互\u手册 从ipywidgets导入交互 显示(HTML(“House Depot Paint Estimator”)) @interact_手册(长度=(1,40,1),宽度=(1,40,1),高度=(6,10,0.5),涂层=(1,3,1),油漆=
get_paint_info
和calc_paint_area
,但输出要么是第一个函数,要么是第二个函数。有什么问题吗
从IPython.display导入显示,HTML
从ipywidgets导入交互\u手册
从ipywidgets导入交互
显示(HTML(“House Depot Paint Estimator”))
@interact_手册(长度=(1,40,1),宽度=(1,40,1),高度=(6,10,0.5),涂层=(1,3,1),油漆=[“每日”,“高级”,“专业])
def钙涂层面积(长度、宽度、高度、涂层、涂层):
面积=(2*长度+2*宽度)*高度
面积=面积*涂层
返回(区域)
def获取喷漆信息(喷漆):
如果油漆==“每天”:
成本=19.95
覆盖范围=320
elif paint=='Premium':
成本=29.95
覆盖率=400
elif paint==“专业人士”:
成本=34.95
覆盖率=425
退货(成本、保险范围)
val1,val2=获取油漆信息(油漆)
打印(val1、val2)
在return
语句之后,不会执行任何操作。您需要将嵌套函数放在前面,然后在末尾返回所有内容
def calc_paint_area(length, width, height, coats, paint):
area = (2 * length + 2 * width) * height
area = area * coats
def get_paint_info(paint):
if paint == 'Everyday':
cost = 19.95
coverage = 320
elif paint == 'Premium':
cost = 29.95
coverage = 400
elif paint == 'Professional':
cost = 34.95
coverage = 425
return (cost, coverage)
val1, val2 = get_paint_info(paint)
print(val1, val2)
return(val1, val2, area)
在另一个函数中定义一个函数是有原因的,但通常都是为了一些高级的东西,比如动态构建函数、编写自己的装饰器等等。对于一般用途,通常需要单独定义它们。你可以这样做:
来自ipywidgets导入交互\u手册
@使用手册(长度=(1,40,1),宽度=(1,40,1),高度=(6,10,0.5),涂层=(1,3,1))
def钙涂层面积(长度、宽度、高度、涂层、涂层):
面积=(2*长度+2*宽度)*高度
面积=面积*涂层
返回区
@interact_手册(油漆=[“每日”、“高级”、“专业”])
def获取喷漆信息(喷漆):
如果油漆==“每天”:
成本=19.95
覆盖范围=320
elif paint=='Premium':
成本=29.95
覆盖率=400
elif paint==“专业人士”:
成本=34.95
覆盖率=425
退货成本、保险范围
或者,如果您确实希望通过一个函数访问所有函数,您可以从一个函数内部调用另一个函数。(如果这样做,我将重命名进行调用的函数,以反映它返回的所有内容。)
来自ipywidgets导入交互\u手册
@交互_手册(长度=(1,40,1),宽度=(1,40,1),高度=(6,10,0.5),
涂层=(1,3,1),油漆=[‘日常’、‘高级’、‘专业’])
def获取油漆面积和油漆信息(长度、宽度、高度、涂层、油漆):
面积=(2*长度+2*宽度)*高度
面积=面积*涂层
成本,覆盖率=获取油漆信息(油漆)
返回区域、成本、覆盖范围
def获取喷漆信息(喷漆):
如果油漆==“每天”:
成本=19.95
覆盖范围=320
elif paint=='Premium':
成本=29.95
覆盖率=400
elif paint==“专业人士”:
成本=34.95
覆盖率=425
退货成本、保险范围
def get_paint_info
是否真的应该缩进def calc_paint_area
您应该首先尝试将get_paint_info()
移到外部,然后从calc_paint_area()
内部调用它。您所说的“返回两个函数”是什么意思?你的意思是从调用两个函数返回值,还是返回对两个函数的引用?@Barmar感谢您的响应,当我运行此程序时,要么显示calc_paint_区域的值,要么如果我交换函数的位置,则显示get_paint_info,我无法使这两个函数都以后续方式显示。@quamrana Hi,谢谢你的回复,我不太清楚这是什么意思,你能详细说明一下吗?很抱歉,如果这是一个愚蠢的问题,我对python还很陌生。