def的Python问题,def内有var的bug,if语句中的变量不起作用

时间:2018-10-18 21:27:21

标签: python function

我制作了一个def roomidea(test),其中包含输入内容,我相信自己做对了return。现在,在第一个if语句下,我有sBedsize, sRoomview, sVehicle, iRoomnum, iNights = roomidea(test),因此它读取了该函数。问题是当我运行它显示的代码时

  

sBedsize未定义

即使我在if语句下拥有所有这些内容。为什么这行不通?

我已经在这个项目上工作了一段时间,现在我认为我的第二个def price(test2)可以工作,但是我不确定,因为到目前为止的第一个def是主要问题,我将不胜感激任何提示,帮助或任何可能帮助我解决或学习如何解决此问题的方法。

现在我还担心的另一个问题是,我在第二个def中使用了许多变量,这意味着我使用变量来求解其他变量,例如dTotalqav并拥有dPrice1,{ {1}},dPrice5dResortfee1都在同一dResortfee2中。因此,这会正确计算还是会产生另一个错误?

如果相关的话,我正在PyCharm中运行它。

def

最后还要输入导入时间,然后再输入time.sleep(5)然后再输入print(test),我正在使用它,以便它重新打印原始输入,以便他们可以更改其输入,也许他们选择了“ Queen Standard是1 1“,但他们犯了一个错误,他们可以键入no并将其输入更改为” King Standard Yes 1 1“之类的字词。无论如何,对这个快速的问题感到抱歉,但这是我遇到的基本问题。

1 个答案:

答案 0 :(得分:1)

您需要调用函数并在之前分配这些变量,然后才能在if语句中查询它们。

这是一个简化的示例:

def foo():
    # These variables only exist inside the function
    one = 1
    two = 2
    three = 3

    # This doesn't cause them to exist outside of the function; it "gives them"
    # as a result of calling the function later
    return one, two, three

# a, b, and c don't exist yet so I can't use them in an if statement here

# This is where we run the code contained in the function foo and bind the
# returned values to variables (they can be named differently, here we use a,
# b, and c)
a, b, c = foo()

# a, b, and c now exist as variables in the main program and they hold the values
# that were returned from the function. Now we can use them in an `if` statement, e.g.
if a or b or c:
    print('Success')