Python在函数之间传递变量(布尔值)

时间:2015-09-05 17:34:45

标签: python return boolean

编辑: 好的,经过大家的一些投入后,我设法让它发挥作用!为了摆脱长链,我简化了很多。这就是我所拥有的:

def main():
    print "Let's find an integer divisible by 3."
    var = (raw_input("Enter an integer: "))
    switch = False
    get_number(var, switch)
    while switch != True:
        print "Try again!"
        main()

def get_number(parameter, nd):
    if parameter.isdigit():
        by_three(int(parameter), nd)
        return parameter, nd
    else:
        print "No, I said an INTEGER. \"%s\" is not an integer." % parameter
        return parameter, False


def by_three(placeholder, tf):
    if placeholder % 3 == 0:
        print "%d is divisible by 3. Isn't that terrific." % placeholder
        return placeholder, True
    else:
        print '%d is not divisible by 3. Boo hoo.' % placeholder
        return placeholder, False

main()

有没有理由我不能在我的其他声明中回到main()?还有另一种让程序回到起点的方法吗?

--- 我尝试构建一个简单的命令行程序,用于查找可被3整除的数字。这个想法是在用户选择一个可被3整除的数字之前不断询问数字。这是我的代码:

switch

好的,所以这就是我的想法:变量nd传递给tf,传递给tf。如果另一个变量(变量>参数>占位符)可被3整除,则TextBlock返回True - 这意味着当我用“while”测试变量时,变量现在已经改变了。

那一定不是正在发生的事情 - 有人可以解释我是如何误解事情的吗?在函数周围传递变量(并返回它们!)对我来说非常困惑。

3 个答案:

答案 0 :(得分:5)

让我们专注于您的代码的这一部分:

...
switch = False
get_number(var, switch)
while switch != True:
   ...

您在此代码段中正在执行的操作:

您有一个变量switch,在开头是False。您将其发送到某个功能,然后检查它是否为True

为什么有意义?

让我们考虑以下计划:

def changeVariable(a)
   a = a * 2

a = 5
changeVariable(a)
print(a)

此程序仍会打印5,因为基本上已声明:您在函数中执行的操作会保留在函数中。

因此,在您的情况下,调用get_number(var, switch)并检查switch的值没有意义,因为它始终是False

解决方案:

您可以使用return语句。然后,您将获得函数的输出

示例:

def changeVariable(a)
   a = a * 2
   return a

a = 5
result = changeVariable(a)
print(a)
print(result)

上述代码将打印5,然后打印10

答案 1 :(得分:4)

定义函数时,通过value返回的return value将被赋予函数本身,不是传递给函数的参数。

例如,

def f(i,j):
  i=1
  j=2
  return i,j

i=3
j=4
i,j=f(i,j)

将给出i = 1和j = 2,但

f(i,j)

将保持i和j未修改(i = 3且j = 4),因为函数内部变量的范围是本地的。

答案 2 :(得分:0)

因此tf不会在任何地方使用。有一个值传递给by_three方法,但是它没有在方法中使用,因此无法返回。现在,切换 - > nd - > TF。 by_three接受tf,但不会将其付诸实施。

by_three正在为您的问题正确设置TrueFalse,并将其重新传递给nd - > switch正确使用条件while的地方。

相关问题