Python在函数之间传递变量(布尔值)
编辑: 好的,在这里的每个人都提供了一些信息之后,我成功地使它工作了!为了去掉长链,我简化了很多。以下是我所拥有的:Python在函数之间传递变量(布尔值),python,return,boolean,Python,Return,Boolean,编辑: 好的,在这里的每个人都提供了一些信息之后,我成功地使它工作了!为了去掉长链,我简化了很多。以下是我所拥有的: def main(): var = (raw_input("Enter an integer: ")) a = get_number(var) if a != False: switch = by_three(int(a)) if switch == True: return else
def main():
var = (raw_input("Enter an integer: "))
a = get_number(var)
if a != False:
switch = by_three(int(a))
if switch == True:
return
else:
print "Try again!"
main()
else:
main()
def get_number(parameter):
if parameter.isdigit():
return parameter
else:
print "No, I said an INTEGER. \"%s\" is not an integer." % parameter
return False
def by_three(placeholder):
if placeholder % 3 == 0:
print "%d is divisible by 3. Isn't that terrific." % placeholder
return True
else:
print '%d is not divisible by 3. Boo hoo.' % placeholder
return False
print "Let's find an integer divisible by 3."
main()
有什么理由不在else语句中返回main()吗?有没有其他方法让程序回到开始
---
我试图构建一个简单的命令行程序来查找可被3整除的数字。这样做的目的是不断地询问一个数字,直到用户选择一个可以被3整除的数字。这是我的密码:
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()
好的,我想是这样的:变量switch
被传递到nd
,它被传递到tf
。如果另一个变量(变为var>parameter>placeholder)可以被3整除,那么tf
的返回值为True,这意味着当我使用“while”测试该变量时,该变量现在已更改
那一定不是发生的事情有人能解释我怎么会误解得这么严重吗?在函数周围传递变量(并返回它们!)对我来说相当混乱。因此
tf
在任何地方都不使用。有一个值由\u three方法传递到,但是该值没有在方法中使用,因此无法返回。现在,切换->nd->tf。三人组接受tf,但不起作用
by_three
为您的问题正确设置了True
或False
,并将其返回到链中的nd
->开关
,该开关在条件中正确使用 定义函数时,通过返回值
返回的值
将提供给函数本身,而不是传递给函数的参数
比如说,
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),因为函数中变量的作用域是局部的。让我们关注代码的这一部分:
在此代码段中您正在执行的操作:
您有一个变量,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
为什么您认为您的代码不起作用?我用正测试用例和负测试用例运行了它,它通过了:让我们找到一个可以被3整除的整数。输入一个整数:3可被3整除。那不是很好吗。再试一次!让我们找到一个可被3整除的整数。输入一个整数:6可被3整除。那不是很好吗。再试一次!让我们找到一个可被3整除的整数。输入一个整数:5不能被3整除。呜呜。再试一次!让我们找到一个可被3整除的整数。输入一个整数:@ShawnMehan哦,是的,我想我不清楚。我想让程序继续要求更多的数字,直到有一个可以被3整除。如果有一个可以被3整除的数字,它应该结束。或者你可以在函数中指定global a
。@Alexander:他似乎没有这个坏习惯;让我们保持这样吧。谢谢你的评论!不过,我遇到了麻烦,因为我在处理变量,我不知道它们的值需要用户输入。我不能只说“placeholder=var”,因为其中一个在函数之外。啊,有太多我不知道的。好的,谢谢!那很有帮助。我对代码进行了更直接的修改:switch=by_三(int(var))我仍然无法将by_三(var)的值解析为True或False。我想我可以在If语句中这样做,但我无法让它工作。
def changeVariable(a)
a = a * 2
return a
a = 5
result = changeVariable(a)
print(a)
print(result)