假设一个单词中的每个字母都有一个指定的数字,比如 'a' = 3,'b' = 2,我如何打印一个单词中所有字母的总和?

Assuming each letter in a word has an assigned number, like 'a' = 3, 'b' = 2, how can I print the sum of all letters in a word?

例如:

Welcome to the Scribble Scorer Enter word: mostboringest
Word: mostboringest Score: 32.5

mostboringest中的每个字母都有一个数值。该程序将所有值相加并打印出分数。

如何使用 while 循环和 for 循环在 Python 中对此进行编码?

这是我目前的情况:

user_input = input('Welcome to the Scribble Scorer; Enter Word:')

i = {'e': 1, 't': 1.5, 'a': 2, 'i': 2, 'n': 2, 's': 2, 'h': 2.5, 'r': 2.5, 'd': 2.5, 'l': 3, 'u': 3, 'c': 3.5, 'm': 3.5, 'f': 4, 'w': 4.5, 'y': 4.5, 'p': 5, 'g': 5, 'b': 5.5, 'v': 5.5, 'k': 5.5, 'q': 5.5, 'j': 6, 'x': 6, 'z':6}

提示用户输入一个词(您可以只要求他们输入任何字符串)。对于这个程序,我们只给小写字母打分!

使用循环,计算所提供的单词(字符串)的分数。您不需要检查错误(例如指定多个单词),但如果输入不正确,您的程序不应崩溃或失败。所有分值都在代码单元格的注释中为您提供。如果您发现以下字符以外的字符,请为其分配 -1 点值。

打印单词和分数。

不断重复这些步骤,直到用户未输入任何内容 ('')。

Welcome to the Scribble Scorer Enter word: mostboringest
Word: mostboringest Score: 32.5
Enter word: feedlebart
Word: mostboringest Score: 24.0
Enter word:

like 'a' = 3, 'b' = 2

mapping = {'a': 3, 'b': 2}
mapping['a'] + mapping['b']  # = 5

编辑(上图为原始示例,下图为整个单词)

mapping = {'e': 1, 't': 1.5, 'a': 2, 'i': 2, 'n': 2, 's': 2, 'h': 2.5, 'r': 2.5, 'd': 2.5, 'l': 3, 'u': 3, 'c': 3.5, 'm': 3.5, 'f': 4, 'w': 4.5, 'y': 4.5, 'p': 5, 'g': 5, 'b': 5.5, 'v': 5.5, 'k': 5.5, 'q': 5.5, 'j': 6, 'x': 6, 'z':6}

example = 'weird'  # was `word`, there is no `o`
score = sum(mapping[i] for i in example)
print(score)

实现此目的的一种方法是使用将字母映射到特定权重值的字典。这样,您可以遍历字符串并将字符串中每个字符累积的总值相加。

letterValues = {
    "a": 1,
    "b": 2,
    "c": 3,
    "g": 1,
    "t": 6
    # .. and so on.
}

string = "mostboringest"

totalValue = 0
for char in string: # For every character in our string.
    totalValue += letterValues.get(char, 0) # Add it to our total.

print(totalValue)

您可以使用 sum 和 map。如果您有非映射字符,您还需要过滤掉 None 映射:

sum(filter(None,map(i.get,user_input)))