我尝试编写一个函数,该函数尝试将变量“ 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 = Falsewhile pgcd == False: [...] couplepgcd(pgcd) 最佳答案 pgcd函数内部的couplepgcd变量是该函数的局部变量,因此即使将pgcd更改为True并从函数返回,调用它时也不会更改您在循环条件中使用的变量。您也不必要将pgcd的当前值传递到函数中,此值在任何地方都没有使用,因此没有必要。这是您可以用来解决此问题的所有选项:将函数的返回值分配给变量pgcd:pgcd = Falsewhile pgcd == False: [...] pgcd = couplepgcd()在函数中使用pgcd语句,以便在函数中对global的赋值将覆盖全局变量(仅当pgcd循环在全局范围内或在Python 3.x上可以使用关键字):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)
10-06 12:39