函数不修改python中的变量

函数不修改python中的变量,python,python-3.x,Python,Python 3.x,我创建了两个列表a和b,其中有10个从0到61的随机数,然后比较这些列表是否有公共数 我将常用号码存储在一个单独的列表中 如果列表中确实有数字,则commonCount将上升,如果列表为空,则noCommonCount将上升 但是,当我要在对函数随机排列10次之后打印计数时,它会打印出0 我不知道为什么,因为我在函数外声明了commonCount和noCommonCount变量 import random noCommonCount = 0 commonCount = 0 def list_

我创建了两个列表a和b,其中有10个从0到61的随机数,然后比较这些列表是否有公共数

我将常用号码存储在一个单独的列表中

如果列表中确实有数字,则commonCount将上升,如果列表为空,则noCommonCount将上升

但是,当我要在对函数随机排列10次之后打印计数时,它会打印出0

我不知道为什么,因为我在函数外声明了commonCount和noCommonCount变量

import random

noCommonCount = 0
commonCount = 0

def list_overlap():
    a = []
    b = []

    count = 0

    while count < 10:
        count = count + 1
        a.append(random.randint(0, 61))
        b.append(random.randint(0, 61))    

    commonNumbers = []

    for i in a:
        if i in b:
            if i not in commonNumbers:
                commonNumbers.append(i)

    if not commonNumbers:
        noCommonCount + 1
    else:
        commonCount + 1


functionCount = 0

while functionCount < 10:
    functionCount = functionCount + 1
    list_overlap()

print(noCommonCount)
print(commonCount)
随机导入
noCommonCount=0
commonCount=0
def列表_重叠():
a=[]
b=[]
计数=0
当计数小于10时:
计数=计数+1
a、 追加(random.randint(0,61))
b、 追加(random.randint(0,61))
CommonNumber=[]
对于我来说,在一个:
如果我在b:
如果我不是普通人:
公共数字。附加(i)
如果不是普通号码:
noCommonCount+1
其他:
公共计数+1
functionCount=0
当functionCount<10时:
functionCount=functionCount+1
列表_重叠()
打印(noCommonCount)
打印(通用计数)

对于修改在外部作用域上声明的变量的函数,还需要一个表单声明

global variable_name

在函数中是必需的(通常直接在函数声明之后。

对于修改在外部作用域上声明的变量的函数,还需要表单声明

global variable_name

在函数中是必需的(通常直接在函数声明之后。

这应该做什么:
noCommonCount+1
?它是否修改了
noCommonCount
变量?它不会,它会创建一个比
noCommonCount
多一个的新变量,并立即将其丢弃。除非使用
全局noCommonCount
,否则函数会创建局部变量变量的阴影。作为一种风格,使用全局变量来存储状态常常令人困惑,您应该返回结果。而且,您实际上没有将结果分配给变量,您只需添加并丢弃结果。@Max所以我应该在函数中创建并返回noCommonCount和commonCount。您可以吗请告诉我它是如何完成的?提前感谢这应该做什么:
noCommonCount+1
?它是否修改了
noCommonCount
变量?它不会,它会创建一个比
noCommonCount
多一个的新变量,并立即将其丢弃。除非使用
全局noCommonCount
,否则函数会创建局部变量变量的用法。作为一种风格,使用全局变量来存储状态常常令人困惑,您应该返回结果。而且,您实际上并没有将结果分配给变量,您只需添加并丢弃结果。@Max所以我应该在函数中创建并返回noCommonCount和commonCount。您可以这样做吗请告诉我它是如何完成的?提前感谢此函数甚至不尝试修改变量,因此这不会解决问题problem@Simplex,实际上,我会修改变量,使用
noCommonCount+=1
,对
commonCount
也一样。如果这样做,您将得到一个错误,将使用本节中的解决方案解决这个函数甚至不尝试修改变量,所以这不会解决问题problem@Simplex,我实际上会修改变量,使用
noCommonCount+=1
,对
commonCount
也一样。如果这样做,您将得到一个错误,将使用此答案中的解决方案解决。