擅长:python、mysql、java
<p>您的<code>couplepgcd</code>函数中的<code>pgcd</code>变量是该函数的本地变量,因此当您调用它时,即使<code>pgcd</code>被更改为<code>True</code>并从函数返回,这不会更改您在循环条件中使用的<code>pgcd</code>变量的值。在</p>
<p>您还不必要地将当前值<code>pgcd</code>传入函数中,这在任何地方都没有使用,因此没有必要。在</p>
<p>以下是可用于解决此问题的所有选项:</p>
<ul>
<li><p>将函数的返回值赋给变量<code>pgcd</code>:</p>
<pre><code>pgcd = False
while pgcd == False:
[...]
pgcd = couplepgcd()
</code></pre></li>
<li><p>在函数中使用<code>global</code>语句,以便在函数中对<code>pgcd</code>的赋值覆盖全局变量(这只适用于<code>while</code>循环在全局范围内,或者在python3.x上可以使用<code>nonlocal</code>关键字):</p>
<pre><code>def couplepgcd():
global pgcd
try:
assert gcd(a,26) == 1
except Exception:
print("a et 26 doivent être premiers entre eux !")
</code></pre></li>
<li><p>使用在函数中修改的可变变量,例如使用一个元素列表:</p>
<pre><code>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)
</code></pre></li>
</ul>