![](/img/trans.png)
[英]BEGINNER Trying to debug a program that uses two other modules in order to run. Can't seem to define variables
[英]Beginner trying to debug an easy program
我是学生,刚开始学习代码。 现在我正在使用Python并且有一个我认为应该工作的程序,但只返回一些我不理解的错误:
回溯(最近一次调用最后一次):文件“C:\\ Program Files \\ Notepad ++ \\ 1913lab3.py”,第23行,打印(大多数(奇数,[]))
文件“C:\\ Program Files \\ Notepad ++ \\ 1913lab3.py”,第9行,大多数N = S [i] UnboundLocalError:在赋值之前引用的局部变量'i'
我不明白第一个错误告诉我的是什么,但我想我理解第二个错误,但我不明白为什么我会得到它。 我不认为我是一个局部变量,因为我在开始时立即定义它。 这是代码:
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是一个参数的函数,返回True或False,S是一个列表。函数最多在S的每个元素上调用P.如果P返回True的次数多于返回False,则必须返回True。它必须返回否则就错了。“
5个打印命令只是我需要为信用工作的5个例子,但是这个程序需要适用于所有列表。 如果有人可以帮助我解决这些错误,那就太好了。 (此外,欢迎任何一般的Python技巧。)
默认情况下,假定在函数内修改的任何变量都是该函数的本地变量。 所以如果你有i += 1
, i
必须先在函数中定义。 或者你必须声明i
作为全球第一( global i
)这样Python知道它是指的对i
您已经定义(第一)之外的功能。 但要小心全局,它们通常很危险(因为它们很难跟踪发生的事情),如果可能的话应该避免。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.