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



例如:

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

mostboringest中的每个字母都有一个数值。程序把所有的值加起来,然后打印出一个分数。

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

到目前为止我写的是:

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:

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

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)))

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)

相关内容

  • 没有找到相关文章

最新更新