幻想足球记分员Python

时间:2014-08-26 04:30:52

标签: python string

我需要创建一个程序,该程序读取一个文本文件,其中包含足球运动员列表并具有相应的点数。它要求足球运动员,直到没有输出,然后它总计所有点。 例如:

Player:Justin Westhoff
Player: Brodie Smith
Player: Brad Ebert
Player: 
Total score for team: 1401 

我真的不知道该怎么做。到目前为止,我的代码是:

z={}
b=input('Player: ')
c=0
while b != '':
   for player in open('players.txt'):
       print(player)

这仅打印播放器列表。我不确定如何将其分数加起来。 顺便说一下,你不能硬编码,因为文本文件中有超过200个玩家。

文本文件的一个例子是:]

Brad Ebert,471
Brodie Smith,466
Kade Simpson,466
Luke Shuey,465
Justin Westhoff,464
Nic Naitanui,464
Chad Wingard,462
Jordan Lewis,459
Michael Johnson,459
Hamish Hartlett,458
Steven Motlop,457
Jaeger O'Meara,457

2 个答案:

答案 0 :(得分:1)

  

我真的不知道该怎么做。

代码的主要部分是:

  1. 读取点文件,并将每个点与玩家相关联。
  2. 保持玩家输入的总分数。
  3. 对于第一部分,您需要使用字典;这是Python的键/值存储。您的密钥是玩家的名字,值是分数。

    在文件的每一行中,播放器名称和分数用逗号分隔。因此,请使用.split(',')将它们分开。

    您应该阅读一次文件,构建字典,然后要求用户输入。你不能要求输入,然后打开文件,搜索播放器,读取分数,然后计算值。这是不切实际的。

    最后,请记住,从文件读取的所有数据都将以字符串形式显示,这意味着您在此行Brad Ebert,471中读取的分数将是字符串'471',而不是整数{{1 }}。使用471转换得分(否则,当您尝试添加数字时,您将收到错误)。

    祝你好运!

答案 1 :(得分:0)

您的文件格式是这样的,您只需要在文件中添加所有整数。因此,您只想在每一行中提取数字并将其添加到运行总计中。以下代码将执行此操作:

from re import findall
f = open(name-of-your-file-here, "r")
points = 0
textin = f.readlines()
for line in textin:
    points += int(('').join(findall(r'\d+', line)))
print points
f.close()

此处,f.readlines()将文件f的所有行读入字符串列表。使用findall的正则表达式从字符串中提取整数。