首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在python中获取全局功能

无法在python中获取全局功能
EN

Stack Overflow用户
提问于 2020-04-14 16:57:04
回答 1查看 26关注 0票数 0

所以我是python的新手,下面是我的python代码:

代码语言:javascript
复制
def main():
    N = 1
    players = 10
    for _ in range(N):
        maxi = 0
        t1 = [3, 6, 7, 5, 3, 5, 6, 2, 9, 1]
        t2 = [2, 7, 0, 9, 3, 6, 0, 6, 2, 6]
        for i in range(players):
            count = t2[i]+1
            flag = 0
            def calcWin(count):
                global maxi,flag
                if(count in t1):
                    flag = 1
                    maxi = maxi + 1
                    t1.remove(count)
                else:
                    count = count + 1
                    if(count<=max(t1)):
                        calcWin(count)

            calcWin(count)
            print(flag)

main()

我希望变量'maxi‘可以在函数calcWin()中访问。因此,它在函数内部将变量声明为全局变量。但它抛出了“NameError”。我希望变量'maxi‘对于每个'N’重新初始化为0。另一件事是'flag‘变量总是打印0,即使它满足条件'if(count in t1)’。(注意:我在函数中声明了'flag‘作为全局)。有人能帮我一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-14 17:17:43

当你在评论中询问如何在没有全局变量的情况下做到这一点时,以下可能是一个建议。请理解,我只是用你的原始代码模仿了我认为你的意图。你可能不得不调整你的算法...

代码语言:javascript
复制
def main():
    n = 1
    players = 10
    for _ in range(n):
        maxi_persistent = 0
        t1 = [3, 6, 7, 5, 3, 5, 6, 2, 9, 1]
        t2 = [2, 7, 0, 9, 3, 6, 0, 6, 2, 6]
        for i in range(players):
            def calc_win(count, maxi):
                flag = False
                if count in t1:
                    flag = True
                    maxi += 1
                    t1.remove(count)
                else:
                    count += 1
                    if count <= max(t1):
                        return calc_win(count, maxi)
                return maxi, flag

            maxi_persistent, win_flag = calc_win(count=t2[i] + 1, maxi=maxi_persistent)
            print(win_flag)


if __name__ == "__main__":
    main()

请注意,当您在问题中使用flag时,不需要任何全局处理。它在函数的每次调用时都是0,所以我只是在函数的开头将它设置为0 (或False)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61203994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档