基于Django的梦幻橄榄球App:缺失球员得分设0的代码问题求助
解决Django梦幻橄榄球应用的球员得分赋值Bug
我来帮你搞定这个问题~首先咱们拆解下你遇到的两个核心问题:
原代码的问题根源
你最初的代码只有在找到匹配球员时才会给QBscore赋值,如果API返回的scores里没有目标球员,循环结束后QBscore根本没被定义,后续使用时自然会抛出“局部变量在赋值前被引用”的错误。
你修改后出现覆盖问题的原因
你尝试添加的elif/else逻辑大概率是把赋值操作放在了循环内部的分支里——比如每次遍历到不匹配的球员时就把QBscore设为0。这样一来,如果循环里最后几个球员都不匹配,之前找到的正确得分就会被覆盖成0;甚至可能每次循环都往totalpoints里加值,导致列表里混进大量无效的0分。
正确的修复方案
咱们换个思路:先初始化得分变量为0,再遍历更新,最后统一加入总列表,这样既避免了未定义变量的错误,也不会覆盖正确得分。
修改后的代码示例:
# 先初始化QBscore为0.0,确保变量始终有定义 QBscore = 0.0 for score in scores: # 找到目标球员时,才更新为实际得分 if score['player_name'] in QBname: QBscore = float(score['points']) # 遍历完所有数据后,再把最终得分加入总列表 totalpoints.append(QBscore)
额外优化建议
- 如果
QBname是单个球员的名字,建议把in改成==,避免出现部分匹配的错误(比如球员名字是"Tom Brady",而QBname里包含"Tom"就误匹配)。 - 如果
QBname是多个QB的名字列表,想要统计所有QB的得分总和,可以调整逻辑:
QBscore = 0.0 for score in scores: if score['player_name'] in QBname: QBscore += float(score['points']) totalpoints.append(QBscore)
这样不管API返回的JSON里有没有目标球员,QBscore都会有合法值,也不会覆盖已找到的正确得分啦~
内容的提问来源于stack exchange,提问作者user14593966
相关产品推荐
相关产品推荐

