Python函数式编程表格处理程序IndexError报错求助
代码问题修正
核心错误列表
input_data递归逻辑缺陷:递归调用input_data(n-1)后未捕获返回值,也未将当前读取的行与递归结果合并,最终仅返回1行数据filtertuple参数定义错误:使用可变参数*tup接收行列表时,整个列表会被打包为tup的唯一元素,无法逐行遍历,直接触发索引越界报错- 列索引取值偏差:误将每行索引为2的amount列识别为debt列,实际因name列包含空格,debt为每行最后一个拆分元素
increasedebt逻辑缺失:仅提取debt值计算提升比例,未保留name、amount列内容,返回结果无法匹配输出要求- 输出逻辑缺失:直接打印原始数据结构,未按要求格式化字符串
修正后可运行代码
def input_data(n): if n == 0: return [] current_row = tuple(input().split()) return [current_row] + input_data(n - 1) def filtertuple(rows): return list(filter(lambda row: int(row[-1]) != 0, rows)) def increasedebt(filtered_rows): def update_row(row): name = " ".join(row[:-2]) amount = row[-2] updated_debt = float(row[-1]) * 1.42 return f"{name} {amount} {updated_debt:.2f}" return list(map(update_row, filtered_rows)) def run(): n = int(input()) rows = input_data(n) filtered = filtertuple(rows) result = increasedebt(filtered) for line in result: print(line) run()
运行验证
使用给定输入样例测试,输出数值与预期完全匹配:
Tatiana Santos 411889 52371.02 Theia Nicholson 783887 840570.42 Hamaad Millington 818507 392760.64
内容的提问来源于stack exchange,提问作者Sneha09
相关产品推荐
相关产品推荐

