我需要创建一个程序,该程序读取一个文本文件,其中包含足球运动员列表并具有相应的点数。它要求足球运动员,直到没有输出,然后它总计所有点。 例如:
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
答案 0 :(得分:1)
我真的不知道该怎么做。
代码的主要部分是:
对于第一部分,您需要使用字典;这是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
的正则表达式从字符串中提取整数。