我试图写一个函数,如果变量'a'和26的GCD是1,如果不是,那么返回变量pgcd为True,以便退出'While'。但是函数不会改变pgcd的值,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
。。。在
^{pr2}$
我想这是因为你没有保存
couplepgcd
函数的结果。在您的
couplepgcd
函数尝试返回pgcd
,即使它没有分配它。如果有异常,pgcd
永远不会设置,返回它就是一个错误。在无论如何,您的
pgcd
函数似乎是一个非常冗长的说法:另外,请记住,当程序以优化模式(
python -O
)运行时,assert
语句将被剥离,这将使原来的函数中断。你不应该像现在这样使用assert
。在然后您应该传入
a
,而不是pgcd
(没有理由传入,因为您不使用它也不能更改它),并在循环中将couplepgcd()
的返回值分配给pgcd
。或者,因为它很短,所以首先不要费心编写函数。在您的
couplepgcd
函数中的pgcd
变量是该函数的本地变量,因此当您调用它时,即使pgcd
被更改为True
并从函数返回,这不会更改您在循环条件中使用的pgcd
变量的值。在您还不必要地将当前值
pgcd
传入函数中,这在任何地方都没有使用,因此没有必要。在以下是可用于解决此问题的所有选项:
将函数的返回值赋给变量
pgcd
:在函数中使用
global
语句,以便在函数中对pgcd
的赋值覆盖全局变量(这只适用于while
循环在全局范围内,或者在python3.x上可以使用nonlocal
关键字):使用在函数中修改的可变变量,例如使用一个元素列表:
相关问题 更多 >
编程相关推荐