Python绘制作业估算器 - 无法获取要打印的功能

时间:2017-03-05 05:20:47

标签: python python-3.x

我尝试了几种不同的配置,但无法弄清楚为什么最后一行不打印。其他一切似乎都按预期工作。 该程序要求用户输入要涂漆的墙面空间的平方英尺和每加仑涂料的价格。然后程序应显示以下内容:

  • 所需的加仑数
  • 需要劳动时间
  • 油漆成本
  • 人工费
  • 总费用(人工+油漆)

    newProductName.getEditor().textProperty().addListener(new ChangeListener<String>() {
                    @Override
                    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                        // TODO Auto-generated method stub
                        if(isInputvalid(newProductName.getEditor().getText())){
                            newProductName.getDialogPane().lookupButton(ButtonType.OK).setDisable(false);
                        }
                    }
                });
    

1 个答案:

答案 0 :(得分:0)

您对范围函数调用以及返回存在根本误解。

函数调用

main中,您设置了一堆变量:

gallonsRequired = calcGallons

这实际上是将变量gallonsRequired设置为函数 calgGallons 而不是该函数的结果。

应该做的是:

gallonsRequired = calcGallons()

同样适用于所有其他函数调用。

范围

每个功能都有自己的范围。如果您将每个函数视为一个框,那么它的范围将是它内部的任何内容:变量,语句等。从函数内声明的任何变量都在该函数的范围内。因此,当您在main

中执行此操作时
squareFeet = float(input("Enter square feet of wall space to be painted: "))

squareFeet&#34;卡住&#34;内。其他功能无法访问它。这是为了允许封装代码。如果您希望其他函数可以访问变量,则必须该变量传递给函数。

在这种情况下,您需要从squareFeet访问calcGallons。要执行此操作,您需要在调用它时传递squareFeet,如下所示:

gallonsRequired = calcGallons(squareFeet)

你需要告诉Python你期望从你calcGallons的定义中得到一个参数,如下所示:

def calcGallons(squareFeet):
    return squareFeet / 115 # no need to set an extra variable
                            # just return the result of the statement

您需要为所有函数调用执行此操作,但只将所需的值传递给每个函数。如果你需要多个参数(你称之为传入的值),只需用逗号分隔它们。

返回

当您从某个函数中调用return时,该函数会立即退出 并且(如果指定了返回值)将结果返回给调用者。例如,在这种情况下:

def foo():
    return 1
    print(5)

print(foo())

1将打印到控制台。为什么?因为从return 1内调用foo时,foo退出,然后print函数获取了返回的1并将其用于打印到控制台。

其他笔记

  • 根据Pep8样式指南,使用snake_case而不是camelCase作为变量名称