Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 同时运行和返回两个函数的问题_Python - Fatal编程技术网

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还很陌生。