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

如何用Python for循环通过单词字符查询字典键值并求和

代码问题排查与优化建议

你现有代码的大小写转换逻辑是正确的,可以正常处理混合大小写的输入,但还存在几个需要修正的问题:

  • 字典名不匹配:你定义的分数字典名为SCRABBLE_LETTER_VALUES,但函数中调用的是LETTER_VALUES,直接运行会触发NameError。
  • 存在冗余参数:函数定义时传入了参数n,但整个逻辑中没有使用该参数,要么直接删除冗余参数,要么根据你的实际需求补充n对应的逻辑(比如拼字游戏常见的长度奖励规则)。
  • 变量名不规范:使用Python内置函数sum作为变量名,会覆盖内置的求和函数,建议替换为total、score_sum等自定义名称。
  • 容错性不足:如果传入的单词包含非英文字母字符(如标点、空格、数字),会直接触发KeyError,可以用字典的get方法优化容错,非字母字符默认加0分即可。

修正后可直接运行的代码示例

SCRABBLE_LETTER_VALUES = {
'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}

def get_word_score(word):
    """接收合法单词,计算拼字游戏得分,支持大小写混合输入"""
    total = 0
    word_low = word.lower()
    for char in word_low:
        # 非字母字符默认加0分,若要求仅支持纯字母输入可删除get的默认值,触发报错提醒非法输入
        total += SCRABBLE_LETTER_VALUES.get(char, 0)
    return total

测试调用get_word_score('abc')即可得到返回值7,符合你的需求。如果需要保留参数n,可以根据实际业务规则补充对应逻辑,比如长度达标额外加分等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:05