我正在编写一个程序,可以计算两个或更多单词的点数。如何获取数组列表中每个点的值?我已经有了点字典。
points_dictionary = {
'A': 1, 'B': 3, 'C': 3,
'D': 2, 'E': 1, 'F': 4, 'G': 2,
'H': 4, 'I': 1, 'J': 8, 'K': 5,
'L': 1, 'M': 3, 'N': 1, 'O': 1,
'P': 3, 'Q': 10, 'R': 1, 'S': 1,
'T': 1, 'U': 1, 'V': 4, 'W': 4, 'X': 8,
'Y': 4, 'Z': 10, '#': 0, '0':3
}
我有一个看起来像这样的列表currwords = ['PEARS' 'MANGO' 'ORANGE]
我已经编写了一个代码,可以获取每个字母的要点,但是其输出会添加所有要点。
for you in currwords:
for yeah in you:
trans = list(yeah)
trans = points_dictionary[yeah[0]]
total_words.append(trans)
final1 = sum(total_words)
print(final1)
每次我使用此代码时,它只会输出列表上的总点数。如何获得每个单词的分数,例如PEAR = 6 MANGO = 8和ORANGE = 7
答案 0 :(得分:2)
points_dictionary = {
'A': 1, 'B': 3, 'C': 3,
'D': 2, 'E': 1, 'F': 4, 'G': 2,
'H': 4, 'I': 1, 'J': 8, 'K': 5,
'L': 1, 'M': 3, 'N': 1, 'O': 1,
'P': 3, 'Q': 10, 'R': 1, 'S': 1,
'T': 1, 'U': 1, 'V': 4, 'W': 4, 'X': 8,
'Y': 4, 'Z': 10, '#': 0, '0':3
}
currwords = ['PEARS', 'MANGO', 'ORANGE']
for word in currwords:
print(word, sum(map(lambda c: points_dictionary.get(c, 0), word)))
输出
PEARS 7
MANGO 8
ORANGE 7
您也可以使用generator expression:
for word in currwords:
print(word, sum(points_dictionary.get(c, 0) for c in word))
映射和生成器表达式的目的是将每个单词的字母映射到对应的点值。
答案 1 :(得分:0)
我认为这里的问题是您在每次迭代时将trans附加到total_words上,但是从不重置其值。您可以添加
total_words = []
在第一个循环中。另外,在for yeah in you
循环中,您两次定义了trans,因此从不使用第一个。更正之后,您的代码应如下所示:
for you in currwords:
total_words = []
for yeah in you:
trans = points_dictionary[yeah]
total_words.append(trans)
final1 = sum(total_words)
print(final1)
答案 2 :(得分:0)
让我们 老派 去做:
points_dictionary = {
'A': 1, 'B': 3, 'C': 3,
'D': 2, 'E': 1, 'F': 4, 'G': 2,
'H': 4, 'I': 1, 'J': 8, 'K': 5,
'L': 1, 'M': 3, 'N': 1, 'O': 1,
'P': 3, 'Q': 10, 'R': 1, 'S': 1,
'T': 1, 'U': 1, 'V': 4, 'W': 4, 'X': 8,
'Y': 4, 'Z': 10, '#': 0, '0':3
}
currwords = ['PEARS', 'MANGO', 'ORANGE']
sumsOfwords = []
sum = 0
i = -1
for words in currwords:
for word in words:
if words == currwords[i + 1]:
sum = sum + points_dictionary[word]
else:
sumsOfwords.append(sum)
sum = 0
sum = sum + points_dictionary[word]
i = i + 1
sumsOfwords.append(sum)
print(sumsOfwords)
输出:
[7、8、7]
dictionary = dict(zip(currwords, sumsOfwords))
print(dictionary)
输出:
{'PEARS':7,'MANGO':8,'ORANGE':7}