我尝试了几种不同的配置,但无法弄清楚为什么最后一行不打印。其他一切似乎都按预期工作。 该程序要求用户输入要涂漆的墙面空间的平方英尺和每加仑涂料的价格。然后程序应显示以下内容:
总费用(人工+油漆)
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);
}
}
});
答案 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
并将其用于打印到控制台。
其他笔记: