如何实现计算名字字母数值总和的get_numeric_value函数?
问题分析
你写的get_numeric_value函数只返回第一个字符的数值,核心原因是循环内部的return语句直接终止了函数——遍历到第一个字符时就立刻返回它的数值,后续字符根本没机会处理。另外return numerals放在循环内部也是错误的,会提前结束函数,连求和的代码都执行不到。
修复方案
既然已经有现成的to_numerical函数,直接调用它简化代码即可。核心思路是遍历所有字符,收集每个字符的数值后求和返回。
修正后的基础版代码
def get_numeric_value(string): numerals = [] for character in string: # 调用已实现的to_numerical函数,把字符数值存入列表 numerals.append(to_numerical(character)) # 遍历完成后对列表求和并返回 return sum(numerals)
更简洁的写法(生成器表达式)
如果想让代码更紧凑,可以直接用生成器表达式求和,省去列表创建的步骤:
def get_numeric_value(string): return sum(to_numerical(char) for char in string)
测试验证
用示例Zelle测试:
Z对应26,e对应5,l对应12,最终总和为26+5+12+12+5=60,和预期结果一致。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

