用Python实现多语言拼字游戏:基于scrabble_letters.txt计算单词得分
我来帮你搞定这个Scrabble单词得分计算的问题!下面是完整的可运行方案,还会帮你排查之前程序可能出问题的地方:
Scrabble单词得分计算完整解决方案
第一步:正确解析分值文件并构建查询字典
你的scrabble_letters.txt是分值 字母 分值 字母...的交替格式,我们先把它转换成字母到分值的字典,这样查询效率最高,也能避免大小写匹配问题。
完整可运行代码
def load_scrabble_scores(file_path): scores = {} try: # 使用with语句自动管理文件,避免忘记关闭 with open(file_path, 'r') as f: # 读取全部内容,按空格分割成列表 content_parts = f.read().strip().split() # 每两个元素为一组:第一个是分值,第二个是字母 for idx in range(0, len(content_parts), 2): score = int(content_parts[idx]) # 统一转大写,避免单词大小写和文件里的字母不匹配 letter = content_parts[idx+1].upper() scores[letter] = score return scores except FileNotFoundError: print(f"❌ 错误:找不到文件 {file_path},请检查路径是否正确") return None except ValueError: print("❌ 错误:文件格式不对,必须是'分值 字母'交替的结构哦") return None def calculate_word_score(word, score_dict): if not score_dict: return 0 total_score = 0 # 把单词转成大写,和字典里的字母统一匹配 for char in word.upper(): # 遇到字典里没有的字符(比如特殊符号)按0分算 total_score += score_dict.get(char, 0) return total_score # 示例运行 if __name__ == "__main__": # 加载分值文件,确保文件和程序在同一目录,或者写完整路径 scrabble_dict = load_scrabble_scores('scrabble_letters.txt') if scrabble_dict: # 测试英语版kiwi:应该得到11分 print(f"单词kiwi的英语版得分:{calculate_word_score('kiwi', scrabble_dict)}") # 换成法语版的scrabble_letters.txt,就能自动算出22分 # print(f"单词kiwi的法语版得分:{calculate_word_score('kiwi', scrabble_dict)}")
你的初步程序可能踩的坑
我猜你之前的程序大概率遇到了这些问题:
- 文件路径错误:如果
scrabble_letters.txt不在程序运行的同目录下,必须写完整路径(比如./files/scrabble_letters.txt或者C:/Users/xxx/scrabble_letters.txt) - 数据解析错误:直接读取后没按「分值+字母」的组来拆分,导致把所有内容当成了无序的字符串
- 大小写不匹配:单词里的小写字母和文件里的大写字母对应不上,查不到分值
- 没有异常处理:文件不存在或者格式错误时直接崩溃,没有任何提示
代码逻辑拆解
load_scrabble_scores函数:- 用
with open自动处理文件关闭,不会出现资源泄漏问题 - 把文件内容拆分成列表后,按步长2遍历,每一组对应一个字母的分值
- 加入异常捕获,遇到文件找不到或格式错误时给出明确提示
- 用
calculate_word_score函数:- 统一把单词转成大写,彻底解决大小写匹配问题
- 用
dict.get()方法处理未知字符,避免程序报错 - 累加每个字母的分值得到总得分
内容的提问来源于stack exchange,提问作者dumb_guy
相关产品推荐
相关产品推荐

