假设一个单词中的每个字母都有一个指定的数字,比如 '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)))
例如:
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)))