【问题标题】:Python loop while collecting data收集数据时的Python循环
【发布时间】:2013-12-22 14:02:07
【问题描述】:

我有一个 NFL 模拟器,可以运行并根据几个变量为两支球队计算得分,但我希望模拟器更准确。我试图让它运行 100 次,计算每支球队获胜的次数,同时还要跟踪每支球队在每次模拟中的得分,然后产生他们的平均得分。我对如何收集分数然后将它们加在一起并除以 100 有点迷茫。此外,如何将“胜利”分配给循环中的团队。

    def calc(self):
        selected_indexA = teams.index(self.var1.get())

        PowerRankA = power_rankings[selected_indexA]
        WinPercA = winning_percentage[selected_indexA] * 100
        LuckA = random.randrange(0,25)
        HomeBonus = 10

        selected_indexB = teams.index(self.var2.get())

        PowerRankB = power_rankings[selected_indexB]
        WinPercB = winning_percentage[selected_indexB] * 100
        LuckB = random.randrange(0,25)
        HomeBonus = 10

        TeamAScore = (PowerRankA + WinPercA + LuckA) / 3
        TeamBScore = (PowerRankB + WinPercB + LuckB + HomeBonus) / 3

        self.lblScoreA["text"] = int(TeamAScore)
        self.lblScoreB["text"] = int(TeamBScore)

    def sim(self):
        count = 0
        while count <= 100:
            if TeamAScore > TeamBScore:
                self.lblWinsA = 1
            else:
                self.lblWinsB = 1
            count +=1

【问题讨论】:

  • 请只发送需要调查的代码..谢谢!
  • 您可以使用for i in range(100) 之类的东西来运行循环 100 次,并且您应该能够创建一个变量来跟踪每个团队的累积得分。到目前为止,您尝试过什么?
  • 您能否缩小代码范围,仅用于平均部分?

标签: python loops tkinter counter average


【解决方案1】:

您可以在for 循环中模拟 100 场比赛并将分数相加,然后除以 100

TeamAScore = 0
TeamBScore = 0

TeamAWins = 0
TeamBWins = 0
NoWins = 0

for i in range(100):
    LuckA = random.randrange(0,25)
    LuckB = random.randrange(0,25)

    ScoreA = (PowerRankA + WinPercA + LuckA) / 3
    ScoreB = (PowerRankB + WinPercB + LuckB + HomeBonus) / 3

    TeamAScore += ScoreA
    TeamBScore += ScoreB

    if ScoreA > ScoreB:
        TeamAWins += 1
    elif ScoreA < ScoreB:
        TeamBWins += 1
    else:
        NoWins += 1


TeamAScore /= 100.0
TeamBScore /= 100.0

print "Avg. Score for TeamA:", TeamAScore, " number of Wins:", TeamAWin
print "Avg. Score for TeamB:", TeamBScore, " number of Wins:", TeamBWin
print "No Wins:", NoWins

如果您需要记住所有分数,请使用list.append()

TeamA_All_Scores = [] # list for all scores
TeamB_All_Scores = [] # list for all scores

TeamAWins = 0
TeamBWins = 0
NoWins = 0

for i in range(100):
    LuckA = random.randrange(0,25)
    LuckB = random.randrange(0,25)

    ScoreA = (PowerRankA + WinPercA + LuckA) / 3
    ScoreB = (PowerRankB + WinPercB + LuckB + HomeBonus) / 3

    TeamA_All_Scores.append(ScoreA)
    TeamB_All_Scores.append(ScoreB)

    if ScoreA > ScoreB:
        TeamAWins += 1
    elif ScoreA < ScoreB:
        TeamBWins += 1
    else:
        NoWins += 1


TeamAScore = sum(TeamA_All_Scores) / 100.0
TeamBScore = sum(TeamB_All_Scores) / 100.0

print "Avg. Score for TeamA:", TeamAScore, " number of Wins:", TeamAWin
print "Avg. Score for TeamB:", TeamBScore, " number of Wins:", TeamBWin
print "No Wins:", NoWins
print "TeamA All Scores:", ",".join(TeamA_All_Scores)
print "TeamB All Scores:", ",".join(TeamB_All_Scores)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多