Python 构建一个梦幻足球应用程序。如果播放器名称不在JSON数据文件中,请将分数设置为零。听起来很简单,但我如何让它工作呢?

Python 构建一个梦幻足球应用程序。如果播放器名称不在JSON数据文件中,请将分数设置为零。听起来很简单,但我如何让它工作呢?,python,django,if-statement,django-forms,Python,Django,If Statement,Django Forms,我正在使用django为一门课程构建一个非常简单的幻想足球web应用程序。我最近发现的一个bug是,如果我从api中提取的JSON数据中没有玩家,那么它会抛出一个错误,指出该玩家分数的局部变量在分配之前被引用。考虑到该玩家没有实际数据,这是有道理的。所以,为了解决这个问题,我想我所需要做的就是在我的逻辑中添加一个elif(或else)语句,将该玩家的分数设置为零。这是我到目前为止的代码 for score in scores: if score['player_name'] in QBn

我正在使用django为一门课程构建一个非常简单的幻想足球web应用程序。我最近发现的一个bug是,如果我从api中提取的JSON数据中没有玩家,那么它会抛出一个错误,指出该玩家分数的局部变量在分配之前被引用。考虑到该玩家没有实际数据,这是有道理的。所以,为了解决这个问题,我想我所需要做的就是在我的逻辑中添加一个elif(或else)语句,将该玩家的分数设置为零。这是我到目前为止的代码

for score in scores:
    if score['player_name'] in QBname:
    QBscore = float(score['points'])
    totalpoints.append(QBscore)
我在一个名为“scores”的列表中循环,其中有来自api调用的玩家分数,然后我将存储在变量“QBname”中的玩家名称与分数['player_name]进行比较。显然,如果score['player_name']是一个匹配项,并且在“QBname”中,我会将该玩家的分数附加到变量“totalpoints”中。现在,为了“修复”这个问题,并将分数0分配给缺席的玩家,我想我需要这样的东西

 if score['player_name'] in QBname:
    QBscore = float(score['points'])
    totalpoints.append(QBscore)

 elif score['player_name'] not in QBname:
      QBscore = 0
      totalpoints.append(QBscore)
然而,它只是通过将其设置为零来覆盖玩家的实际得分。我已经通过给其他肯定在场并且有得分的球员添加elif线来测试了它,但是是的,超越了它。我也尝试了一个类似的else语句,但结果相同


所以,这似乎是一个非常简单的问题要解决,但我一直在出错,可以这么说,我真的希望能有另一双眼睛来观察它。我很感激你的任何想法。

在这之后是否在其他地方使用了
QBscore
,你是否有理由将其设置为0,然后附加到
totalpoints
,而不仅仅是调用
totalpoints.append(0)
?Good point@dragonboz。我只是通过做totalpoints.append(0)来尝试你的建议,因为在此之后QBscore实际上不再使用。它解决了不使用0覆盖玩家分数的问题,但是django仍然为数据中不存在的玩家抛出一个UnboundLocalError。我认为如果您显示更多代码,这会有所帮助。对我来说,一件不相关的事情很突出,那就是你可能想要
score[“player_name”]==QBname
,而不是QBname中的
score[“player_name”]。在此上下文中,在
中使用
,意味着您正在搜索另一个字符串中是否存在子字符串。这会产生不良副作用,可能会将两个不同的玩家视为同一个玩家。例如,如果
score['player_name']
“Bob”
,而
QBname
“Bobby”
,您将输入if语句的主体,因为子字符串
“Bob”
出现在
“Bobby”
中。感谢@PaulM的评论。事实上,这毕竟是一个容易解决的问题。过了一会儿,我意识到我只需要将QBscore变量的顺序设置得更高,因为它在赋值之前被引用。当我意识到修理起来是多么容易时,我给自己上了一记勾拳。