gpt4 book ai didi

python - 初学者尝试调试简单的程序

转载 作者:行者123 更新时间:2023-12-02 10:48:02 25 4
gpt4 key购买 nike

我是学生,刚开始学习代码。现在,我正在使用Python,并且有一个我认为应该可以运行的程序,但是只返回一些我不理解的错误:

Traceback (most recent call last): File "C:\Program Files\Notepad++\1913lab3.py", line 23, in print(most(odd, []))

File "C:\Program Files\Notepad++\1913lab3.py", line 9, in most N = S[i] UnboundLocalError: local variable 'i' referenced before assignment



我不明白第一个错误告诉我什么,但是我想我理解第二个错误,但是我不明白为什么会得到它。我认为我不是一开始就定义的局部变量。这是代码:
t = 0
f = 0
i = 0

def odd(N):
return N % 2 != 0

def most(P, S):
N = S[i]
if P == True:
t += 1
else:
f += 1
i += 1
if i < len(S):
most(P, S)
else:
if t > f:
return 'True'
else:
return 'False'

print(most(odd, []))
print(most(odd, [0]))
print(most(odd, [1]))
print(most(odd, [1, 2]))
print(most(odd, [1, 2, 3]))

分配是要定义一个递归函数(most())。该函数将一个函数和一个列表作为其参数(P和S)。我不能使用循环或局部变量。这是作业的报价:

"P is a function of one argument that returns either True or False, and S is a list. The function most calls P on each element of S. It must return True if P returns True more often than it returns False. It must return False otherwise."



这5个打印命令只是我需要努力获得信誉的5个示例,但是该程序需要适用于所有列表。如果有人可以帮助我解决这些错误,那就太好了。 (此外,任何通用的Python技巧都将受到欢迎。)

最佳答案

默认情况下,假定在函数内修改的任何变量都在该函数本地。因此,如果您有i += 1,则必须首先在函数中定义i。或者,您必须将i声明为全局第一个(global i),以便python知道它引用的是您在函数外部定义的i(第一个)。但是要当心全局变量,它们通常很危险(因为它们使跟踪发生的事情变得困难),并应尽可能避免。

关于python - 初学者尝试调试简单的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42216149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com