UnboundLocalError:赋值前引用的局部变量"result"



我遇到了无法解决的问题。当我运行代码时,我会收到以下错误:

UnboundLocalError: local variable 'result' referenced before assignment

我的代码如下:

def findMaxPages(userInlist):
size = len(userInlist)
readList = []
if size == 0:
result = (0, readList)
if size == 1:
readList.append(userInlist[0])
result = (readList[0].getSumPage(), readList)
if size > 1:
dic0, dic1 = userInlist[0].getPagesDic(), userInlist[1].getPagesDic()
exist=0
for keys in dic0.keys():
if keys in dic1: 
exist+=1
if exist == 0:
nextUser = userInlist[0]
withPage, withToTake = findMaxPages(userInlist[1:])
withPage += nextUser.getSumPage()
withoutPage, withoutToTake = findMaxPages(userInlist[1:])
if withPage > withoutPage:
readList.append(nextUser)
result = (withPage, withToTake + readList)
else:
result = (withoutPage, withoutToTake)
return result
pages, readerlist = findMaxPages(users)

"users"是一个列表,其元素是Person对象。

class Person(object):
def __init__(self, name, min, max):
self.name = name
self.min = min
self.max = max
def getName(self):
return self.name
def getMinPage(self):
return self.min
def getMaxPage(self):
return self.max
def getSumPage(self):
return self.max - self.min + 1
def getAllPages(self):
allPages = []
for pages in range(self.min, self.max + 1):
allPages.append(pages)
return allPages
def getPagesDic(self):
return createDic(self.getAllPages())

createDic((方法将参数中的列表作为字典返回。

算法正试图做到这一点:有些人阅读特定书籍的页面(最小=从书中阅读的第一页,最大=从书上阅读的最后一页(。让我们创建一个由这些人组成的组,这样组中没有人读取公共页面,并且组读取的页面数达到最大值。非常感谢你的帮助。

findMaxPages函数的最顶部添加result = None。这是"简单"的解决方案。

更详细的部分是,在if语句中有一些分支根本没有定义result。为了使return语句可以访问它,您需要确保您的变量已在if/elif/else语句的所有分支中声明。

最新更新