为什么会出现此错误?该代码之前工作。 'UnboundLocalError:分配前已引用局部变量'doublecard''

问题描述 投票:0回答:1

我正在尝试获取列表中的数字,将其转换为整数,将每个数字翻倍,然后返回字符串。然后,我将其添加到一个空字符串以进行迭代,然后在字符串中添加每个索引。

def check(num):
    num = str(num)
    rightsum = 0
    leftsum = 0
    doublecard = ""
    if len(num) % 2 == 0:
        rightnums = num[1::2]
        leftnums = num[0::2]

    if len(num) % 2 != 0:
        rightnums = num[0::2]
        leftnums = num[1::2]

    for i in rightnums:
        rightsum += int(i)
    for i in leftnums:
        dubcard = int(i)
        dubcard += int(i)*2
        dubcard = str(dubcard)
        doublecard += dubcard

    for i in doublecard:
        leftsum+=int(i)


    total = rightsum + leftsum

    if total % 10 == 0:
        return True
    else:
        return False
python python-3.x list error-handling assignment-operator
1个回答
0
投票

Python没有变量声明,因此它必须弄清楚变量本身的范围。它是通过一个简单的规则来做到这一点的:如果在函数内部有对变量的赋值,则该变量被视为局部变量。因此,doublecard + = dubcard行隐含地使doublecard局部递增。但是尝试执行此行将尝试在分配局部变量doubleboard之前读取它的值,从而导致UnboundLocalError。如果doublecard是全局变量,则全局关键字会有所帮助。如果增量()是局部函数,而双卡是局部变量,则可以在Python 3.x中使用非局部。

© www.soinside.com 2019 - 2024. All rights reserved.