NameError:名称“ dict1”未定义?为什么会出现此错误?

时间:2020-07-29 03:29:01

标签: python dictionary variables global

此代码表示未定义dict1。我已经对dict进行了全局定义。应该可以在函数内部访问它。请指导。

在这段代码中,我试图将键值对添加到dict1中,如果dict中不存在键值对,否则它将从dict中获取值。

def find_sum(num_str):
    sum1=0
    for i in num_str:
        sum1+=int(i)
    return sum1
    

def find_ten_substring(num_str):
    list1=[]
   
    for i in range(2,len(num_str)+1):
        for j in range(0, i):
            if(i!=j ):
                x=num_str[j:i]
                if(x in dict1):
                    if(dict1[x]==10):
                        list1.append(x)
                elif(x not in dict1):
                    y=find_sum(x)
                    
                    if(y==10):
                        dict1[x]=y 
                        list1.append(x)
    
    return list1
    
    #Remove pass and write your logic here
    return list1
    
dict1={}
num_str="2825302"
print("The number is:",num_str)
result_list=find_ten_substring(num_str)
print(result_list)

2 个答案:

答案 0 :(得分:1)

该代码在python 3.7.3中对我来说工作正常。

The number is: 2825302

['28', '82', '253', '2530', '5302']

这是我收到的输出

答案 1 :(得分:0)

我没有得到错误。更好的做法是将可变对象作为参数传递给函数。将find_ten_substring()更改为采用其他参数

def find_sum(num_str):
    sum1 = 0
    for i in num_str:
        sum1 += int(i)
    return sum1


def find_ten_substring(num_str, dict1):
    list1 = []

    for i in range(2, len(num_str) + 1):
        for j in range(0, i):
            if (i != j):
                x = num_str[j:i]
                if (x in dict1):
                    if (dict1[x] == 10):
                        list1.append(x)
                elif (x not in dict1):
                    y = find_sum(x)

                    if (y == 10):
                        dict1[x] = y
                        list1.append(x)

    return list1

    # Remove pass and write your logic here
    return list1


dict1 = {}
num_str = "2825302"
print("The number is:", num_str)
result_list = find_ten_substring(num_str, dict1)
print(result_list, dict1)