You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用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)
  • 数据解析错误:直接读取后没按「分值+字母」的组来拆分,导致把所有内容当成了无序的字符串
  • 大小写不匹配:单词里的小写字母和文件里的大写字母对应不上,查不到分值
  • 没有异常处理:文件不存在或者格式错误时直接崩溃,没有任何提示

代码逻辑拆解

  1. load_scrabble_scores函数:

    • 用with open自动处理文件关闭,不会出现资源泄漏问题
    • 把文件内容拆分成列表后,按步长2遍历,每一组对应一个字母的分值
    • 加入异常捕获,遇到文件找不到或格式错误时给出明确提示
  2. calculate_word_score函数:

    • 统一把单词转成大写,彻底解决大小写匹配问题
    • 用dict.get()方法处理未知字符,避免程序报错
    • 累加每个字母的分值得到总得分

内容的提问来源于stack exchange,提问作者dumb_guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:59:29