我试图编写一个函数,该函数尝试将变量'a'和26的GCD设为1,如果不是,则将变量pgcd返回为True,以退出“ While”。但是该函数不会更改pgcd的值,该值保持为False,因此保留在“ While”中。我不明白为什么价值不变。你可以帮帮我吗 :)
def couplepgcd(pgcd):
try:
assert gcd(a,26) == 1
pgcd = True
except Exception:
print("a et 26 doivent être premiers entre eux !")
return pgcd
...
pgcd = False
while pgcd == False:
[...]
couplepgcd(pgcd)
函数pgcd
内部的变量couplepgcd
是该函数的局部变量,因此即使将pgcd
其更改True
为该函数并从该函数返回,调用它时也不会更改pgcd
循环条件中使用的变量的值。
您也不必要将当前值传递pgcd
到函数中,该值在任何地方都没有使用,因此没有必要。
这是您可以用来解决此问题的所有选项:
将函数的返回值分配给变量pgcd
:
pgcd = False
while pgcd == False:
[...]
pgcd = couplepgcd()
global
在函数中使用语句,以便在函数中进行赋值会pgcd
覆盖全局变量(仅当while
循环在全局范围内或在Python 3.x上可以使用nonlocal
关键字时,此方法才有效):
def couplepgcd():
global pgcd
try:
assert gcd(a,26) == 1
except Exception:
print("a et 26 doivent être premiers entre eux !")
使用您在函数中修改的可变变量,例如,一个元素列表:
def couplepgcd(pgcd):
try:
assert gcd(a,26) == 1
pgcd[0] = True
except Exception:
print("a et 26 doivent être premiers entre eux !")
pgcd = [False]
while not pgcd[0]:
[...]
couplepgcd(pgcd)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句