为了账号安全,请及时绑定邮箱和手机立即绑定

我如何获得每个单词的分数?

我如何获得每个单词的分数?

慕哥6287543 2021-10-19 16:12:12
我正在制作一个可以计算两个或多个单词点数的程序。如何获取数组中列表中每个点的值?我已经有一个点字典。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
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

您可以将sum与map一起使用:


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

作为替代方案,您可以使用生成器表达式:


for word in currwords:

    print(word, sum(points_dictionary.get(c, 0) for c in word))

map 和生成器表达式的思想都是将每个单词的字母映射到相应的点值。


查看完整回答
反对 回复 2021-10-19
?
慕神8447489

TA贡献1780条经验 获得超1个赞

让我们用老派的方式来做:


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)

输出:


{'梨':7,'芒果':8,'橙色':7}


查看完整回答
反对 回复 2021-10-19
  • 3 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号