Python实现Scrabble单词分值计算函数技术求助
解决Scrabble单词分值计算的函数实现
没问题,这个Scrabble单词分值计算的需求其实很好实现,核心就是累加每个字母对应的分值。我来给你一步步说明怎么写这个scrabble_word函数:
核心思路
函数需要做的事情很简单:
- 初始化一个总分变量,从0开始
- 遍历输入的
word列表里的每一个字母 - 从
pointtable字典中取出该字母对应的分值,加到总分里 - 最后返回累加后的总分
基础实现代码
def scrabble_word(pointtable, word): total_score = 0 for letter in word: # 用get方法可以避免字母不在字典里时抛出KeyError,默认加0分 total_score += pointtable.get(letter, 0) return total_score
代码解释
total_score用来存储累加的总分,初始值设为0- 遍历
word列表中的每个字母,逐个处理 - 使用
pointtable.get(letter, 0)而不是直接pointtable[letter],是为了处理字母不在分值字典中的边界情况——这时候会默认加0分,避免程序崩溃。如果题目明确保证word里的所有字母都存在于pointtable中,也可以直接用pointtable[letter] - 最后返回计算好的总分
示例用法
我们用标准的Scrabble分值表来测试一下:
# 标准Scrabble字母分值字典 scrabble_points = { '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 } # 测试单词:HELLO(字母列表形式) test_word = ['H', 'E', 'L', 'L', 'O'] print(scrabble_word(scrabble_points, test_word)) # 输出:4+1+1+1+1=8
进阶优化:处理大小写不一致
如果你的word列表里可能出现小写字母,而pointtable的键是大写(或者反过来),可以在遍历的时候统一转换大小写,让函数更鲁棒:
def scrabble_word(pointtable, word): total_score = 0 for letter in word: # 统一转成大写后再查分值(如果字典键是小写就用lower()) total_score += pointtable.get(letter.upper(), 0) return total_score
内容的提问来源于stack exchange,提问作者werlless
相关产品推荐
相关产品推荐

