需要关于Python的关于列表和提取数字的帮助。

时间:2014-08-25 02:25:48

标签: python

我再次陷入困境。 我有一个名为players.txt的文件,如下所示:

Brad Ebert,471
Michael Johnson,459
Brodie Smith,466
Kade Simpson,466
Luke Shuey,465
Justin Westhoff,464

我的代码如下:

items = open('players.txt')
items = [i.split(',', 1)[1] for i in items]
player = input('Player: ')
while player != ' ':
  player = input('Player: ')
  for person in player:
    result = sum(items[person]) for person in player) 
    print (result)

如何制作,以便在输入播放器名称时,我得到以下结果? (代码应该停在空白输入上):

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

3 个答案:

答案 0 :(得分:1)

像@pbible所说,使用dict是最好的方法。这是我的解决方案:

items = open('players.txt')
myDict = dict()
for i in items:
    myKey, myVal = i.split(',')
    myDict[myKey.lower()] = int(myVal)

result = 0
while True:
    player = input('Player: ')
    if player = '':
        break
    elif myDict.get(player.lower()):
        result += myDict[player]
    else:
        print('Player not found')

print('Total score for team: ' + str(result))

答案 1 :(得分:0)

首先尝试设置这样的字典:

这是交互式python的输出

>>> f = open('players.txt')
>>> playerMap = {}
>>> for line in f:
...   line = line.strip()
...   parts = line.split(",")
...   playerMap[parts[0]] = int(parts[1])
... 
>>> playerMap
{'Michael Johnson': 459, 'Justin Westhoff': 464, 'Luke Shuey': 465, 'Kade Simpson': 466, 'Brad Ebert': 471, 'Brodie Smith': 466}
>>> 

然后检查播放器字符串是否是playerMap中的键

result = 0
while player != '':
  if player in playerMap:
    result += playerMap[player]
  #If player is empty now no work will be done
  player = input('Player: ')
#print result when you are done
print(result)

答案 2 :(得分:-1)

您正在尝试对文件对象进行列表理解。

尝试将第一行重新加入

items = open('players.txt').read().split('\n')

所以项目将是列表理解所期望的每行的列表