所以我是python的新手,下面是我的python代码:
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‘作为全局)。有人能帮我一下吗?
发布于 2020-04-14 17:17:43
当你在评论中询问如何在没有全局变量的情况下做到这一点时,以下可能是一个建议。请理解,我只是用你的原始代码模仿了我认为你的意图。你可能不得不调整你的算法...
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)。
https://stackoverflow.com/questions/61203994
复制相似问题