我正在编写一个非常基本的脚本,该脚本根据去年的整个赛季数据来计算NFL球员的幻想足球得分。当我这样做时,我将查看他们今年将缺席的游戏数量,并将折扣系数应用于他们的总积分。

例如。汤姆·布雷迪(Tom Brady)今年将缺席4场比赛,因此他失去了25%的积分。

由于很少有玩家会错过比赛,因此我有一个词典将玩家的名字映射到他会错过的游戏数量。创建玩家时,我会检查他的名字是否在SUSPENSIONS词典中,如下所示:

if name in SUSPENSIONS.keys():
    newTE = TE(name, team, rushingYards, rushingTouchdowns, rushingFumbles, receptionYards, receptionTouchdowns, SUSPENSIONS[name])


我与安东尼奥·盖茨(Antonio Gates)进行了测试,他今年将缺席4场比赛。他的25%折扣未得到应用。我运行上面的代码,然后执行:

print(str(newTE.gamesSuspended))


然后返回0。

这是我的SUSPENSIONS词典:

SUSPENSIONS = {"Antonio Gates": 4, "Ahmad Bradshaw": 1, "Trey Watts": 4, "Tom Brady": 4, "Josh Gordon": 16, "Le'Veon Bell": 2, "LeGarrette Blount": 1}


一些有趣的事情:

1)汤姆·布雷迪(Tom Brady)的折扣确实适用,尽管勒凡·贝尔(Le'Veon Bell),安东尼奥·盖茨(Antonio Gates)和大概大多数其他人没有。

2)我的代码知道“ Antonio Gates”是SUSPENSIONS词典中的键。由于某种原因,它将gamesSuspended字段设置为0而不是4(该值对应于字典中他的名字)。为什么是这样?

如果能为您解决所有问题提供帮助,
克莱曼

编辑以显示TE.py:

from Player import *
from constants import *

class TE(Player):
    def __init__(self, name, team, rushingYards, rushingTouchdowns, rushingFumbles, receptionYards, receptionTouchdowns, position="TE", gamesSuspended=0):
        super().__init__(name, team, rushingYards, rushingTouchdowns, rushingFumbles, gamesSuspended)
        self.receptionYards = receptionYards
        self.receptionTouchdowns = receptionTouchdowns
        self.position = "TE"

    def calculatePoints(self):
        return (super().calculatePercentageOfSeason() * (super().calculatePoints() + POINTS_PER_RECEPTION_YARD * self.receptionYards + POINTS_PER_RECEPTION_TOUCHDOWN * self.receptionTouchdowns))

    def toString(self):
        return "position: " + self.position + " " + super().toString() + " rushing yards: " + str(self.rushingYards) + " rushing touchdowns: " + str(self.rushingTouchdowns) + " rushing fumbles: " + st    r(self.rushingFumbles) + " reception yards: " + str(self.receptionYards) + " reception touchdowns: " + str(self.receptionTouchdowns)


所以TE(...)是Tight End类的构造函数。如果gamesSuspended变量未绑定,则将其初始化为0(因为它是可选参数)。但我确实通过了gamesSuspended ...

最佳答案

您正在通过gamesSuspended来确定玩家的位置,我认为这不是您想要的。

由于构造器中的参数太多,因此有时使用命名参数很有用,以免混淆它们。

newTE = TE(name, team, rushingYards, rushingTouchdowns, rushingFumbles, receptionYards,
           receptionTouchdowns, position="TE", gamesSuspended=SUSPENSIONS[name])

10-07 21:52