Python 如何确定存储在文件中的最大拼字分数?

Python 如何确定存储在文件中的最大拼字分数?,python,Python,我得到了每个字母的分数列表: SCRABBLES_SCORES = [(1, "E A O I N R T L S U"), (2, "D G"), (3, "B C M P"), (4, "F H V W Y"), (5, "K"), (8, "J X"), (10, "Q Z")] 在文件中我必须找到得分最高的单词 我有一个问题,因为我不知道如何检查新线。 我试过这个,但它是一个永无止境的循环: max = 0 help = 0 file = ope

我得到了每个字母的分数列表:

SCRABBLES_SCORES = [(1, "E A O I N R T L S U"), (2, "D G"), (3, "B C M P"),
                    (4, "F H V W Y"), (5, "K"), (8, "J X"), (10, "Q Z")]
在文件中我必须找到得分最高的单词

我有一个问题,因为我不知道如何检查新线。 我试过这个,但它是一个永无止境的循环:

max = 0
help = 0
file = open("dictionary.txt", "r")
for line in file:
    for l in line:
        while(l != '\n'):
            help += LETTER_SCORES.get(l)
            if(help > max):
                max = help
            else:
                continue
    help = 0

print(max)
有人知道我做错了什么吗

[编辑词典的映射:

LETTER_SCORES = {letter: score for score, letters in SCRABBLES_SCORES
                    for letter in letters.split()}

while
循环导致了您的错误

假设第一行以字母
'a'
开头,然后是条件
l!='\n'
将为true,并且在while循环的迭代过程中不会更改,因此您会被卡在那里

您不需要while
循环。

尝试使用以下选项,以获得更清晰的答案:

words = ['foo', 'bar', 'baz']  # this simulates the words in your file

max(sum(LETTER_SCORES[c.upper()] for c in word) for word in words)  # returns 14 for 'baz'
您可以按如下方式读取文件:

with open("dictionary.txt") as f:
    words = list(f)

while(l!='\n'):
是一个无限循环,因为
l
while
循环体内部从不更改。您的结构是错误的。对于这个问题的规模,使用一个字典,将字母作为键映射到它们作为值的点。对于一个单词的文件来说,它工作得很好。如果有超过1个,我会得到一个错误:KeyError:'n'