幻想足球得分计算器Python
我需要写一个程序,这个程序要读取一个文本文件,里面有一份足球运动员的名单和他们的得分。程序会询问关于这些足球运动员的信息,直到没有更多的输出,然后它会把所有的得分加起来。
比如:
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
你的文件格式很简单,实际上你只需要把文件里的所有整数加起来就行。所以你只需要提取每一行的数字,然后把它们加到一个总数里。下面的代码可以做到这一点:
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
的正则表达式可以从字符串中提取出整数。
1
我其实不知道该怎么做。
你代码的主要部分有:
- 读取分数文件,并将每个分数与一个玩家关联起来。
- 记录每个玩家的总分。
对于第一部分,你需要用到字典;字典是Python中的一种键值存储方式。你的键是玩家的名字,值是他们的分数。
在你文件的每一行中,玩家的名字和分数是用逗号分开的。所以你可以用 .split(',')
来把它们分开。
你应该先读取文件,建立字典,然后再询问用户输入。不能先询问输入,然后再打开文件,查找玩家,读取分数,最后计算。这种做法不太实际。
最后,记住从文件读取的数据都是字符串,这意味着你在这一行 Brad Ebert,471
中读取到的分数是字符串 '471'
,而不是整数 471
。你需要用 int()
来转换分数(否则,当你尝试加这些数字时,会出错)。
祝你作业顺利!