使用try / except的函数不返回!在python 3中

亚历克西斯·卡隆

我试图编写一个函数,该函数尝试将变量'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)
安德鲁·克拉克(Andrew Clark)

函数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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 try except 在 python 中捕获错误

在Python的Try and Except中的“ if”语句中使用“或”

使用try和except来验证用户在Python中的输入

Python与try-except-finally中的返回值混淆

我的代码无法通过python 3中的try和except函数正常运行

在单个函数中混合使用'__try'和'try'-通过Lambda

使用Try and Except块,但是在Except部分中,它显示了Not Defined Python

python中的try/except语句

具有try-except结构的递归函数中的return语句未执行/返回NoneType

try语句在Python 2.7中不返回值

模拟不覆盖Python中函数的返回

作用域如何与python中的try和except块一起使用?

使用Try and Except时如何在Python中对错误进行单元测试

React-无法在.map中使用Try Catch块(从try catch中返回jsx)

try:/ except:尝试运行模块时在Python中返回语法错误

python 3 try-except all with error

使用ifelse的函数不返回R中的向量

使用If条件不返回函数中的值

在 java 中使用返回值在 try 中混淆执行

python函数中的返回语句不返回任何内容

Python - 在“try”之后使用“except”作为“try”的“else”部分

为什么使用Python函数:type(“ This is a string')-在PyCharm IDE中不返回任何结果,但是在IDLE和其他编辑器中返回<class'str'>?

try / except块中的Python变量范围

<try> 和 <except> 函数前 & 函数中的区别

为什么我们使用 try,除了在 Python 中

如何使用try打印除python中的每个错误

使用def并在python 3中返回

使用 try/catch 省略函数的返回

Python3 函数不返回完整列表