Python解码函数缺失代码排查:输入34、56未得预期28、46输出
问题:Python解码代码缺失行排查
输入示例为34、56时,预期输出应为[28, 46],但运行以下代码后实际得到的输出是[24, 4, 40, 6](其中24+4=28,40+6=46),请找出缺失的代码行。
原代码:
def decode(code): decimals = [] code = code.split(" ") for number in code: length = len(number) for digit in number: decimal = int(digit) * (8**(length - 1)) decimals.append(decimal) length -= 1 print(decimals)
问题分析
当前代码仅将每个数字的每一位计算结果单独存入列表,没有对单个数字的各位计算值求和。比如处理34时,直接把3*8^1=24和4*8^0=4分别加入列表,而非求和得到28后再存入。
缺失的代码及修正后的版本
需要为每个数字单独维护一个累加变量,先把该数字的各位计算值求和,再将总和存入结果列表。核心缺失的逻辑分为两步:
- 在内层循环前初始化累加变量
- 内层循环结束后将累加结果存入列表
修正后的代码:
def decode(code): decimals = [] code = code.split(" ") for number in code: length = len(number) current_sum = 0 # 缺失的累加变量初始化行 for digit in number: decimal = int(digit) * (8**(length - 1)) current_sum += decimal # 替换原append逻辑,改为累加 length -= 1 decimals.append(current_sum) # 缺失的单个数字结果存入行 print(decimals)
运行修正后的代码,输入"34 56"时,输出即为[28, 46],符合预期。
内容的提问来源于stack exchange,提问作者catcoder7
相关产品推荐
相关产品推荐

