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

CodeWars《Highest Scoring Word》测试用例错误,结果不符求助

解决CodeWars《Highest Scoring Word》测试用例错误问题

问题描述

执行测试用例 print(high('what time are we climbing up the volcano')) 时,预期返回volcano,但实际得到what。问题根源是你误解了题目要求:题目需要计算单词中所有字母分值的总和作为单词得分,而非取单词里单个字母的最高分值。

代码错误分析

你的代码逻辑中,对每个单词只保留了单个字符的最高分值(比如what里的w对应23,成为该单词的得分),而没有累加所有字符的分值。比如volcano的正确得分应为:22(v)+15(o)+12(l)+3(c)+1(a)+14(n)+15(o) = 82,远高于what的23+8+1+20=52,所以正确结果应该是volcano。

修正后的代码

from string import ascii_lowercase

def high(x):
    words = x.split()
    # 直接存储字母对应的整数分值,避免重复类型转换
    letter_scores = {letter: index for index, letter in enumerate(ascii_lowercase, start=1)}
    word_scores = {}
    
    for word in words:
        total_score = 0
        for char in word:
            total_score += letter_scores[char]
        word_scores[word] = total_score
    
    # 获取得分最高的单词,若多个单词得分相同则取第一个出现的
    return max(word_scores, key=word_scores.get)

关键修正点

  1. 分值计算逻辑:将原来的“取单个字母最高分”改为“累加所有字母分值”,这是符合题目要求的核心调整。
  2. 优化字典存储:letter_scores直接存储整数类型的分值,避免了原代码中反复转换字符串到整数的冗余操作。
  3. 变量命名优化:用更清晰的变量名(如total_score、letter_scores)提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:30:52