Python实现输入列A/B后计算列C/D/E并求列C/D平均值
修正Python终端数据计算与输出代码
原代码核心问题
- 变量初始化错误:
columnC初始化为列表columnB,后续累加操作触发类型错误;columnD直接执行列表减法,Python不支持该操作。 - 打印逻辑错误:将字符串拼接代码作为文本输出,而非实际计算并拼接数值。
- 输入格式错误:
input()内的字符串包含换行,导致语法报错。 - 数据存储混乱:
empty2同时存入columnD和columnE,导致平均值计算结果错误。 - Column E无计算逻辑:仅初始化空列表,未实现对应数值计算。
修正后的代码
def solve(columnA, columnB): # 打印表头,用制表符对齐保证格式整齐 print("Class\tColumnA\tColumnB\tColumnC\tColumnD\tColumnE") col_c_list = [] col_d_list = [] col_e_list = [] for idx in range(len(columnA)): # 替换为你实际需要的计算逻辑,示例为基础加减乘运算 col_c = columnA[idx] + columnB[idx] col_d = columnA[idx] - columnB[idx] col_e = columnA[idx] * columnB[idx] # 打印每行数据,用制表符对齐 print(f"{idx+1}\t{columnA[idx]}\t{columnB[idx]}\t{col_c}\t{col_d}\t{col_e}") # 存储数据用于后续平均值计算 col_c_list.append(col_c) col_d_list.append(col_d) col_e_list.append(col_e) return col_c_list, col_d_list, col_e_list # 获取类别数量 class_num = int(input("Enter the number of Classes: ")) column_A = [] column_B = [] # 循环获取每类的Column A和Column B数值 for i in range(class_num): a_val = int(input(f"Enter the number for Column A {i+1}: ")) b_val = int(input(f"Enter the number for Column B {i+1}: ")) column_A.append(a_val) column_B.append(b_val) # 执行计算并获取结果 c_list, d_list, e_list = solve(column_A, column_B) # 计算并打印平均值,保留两位小数提升可读性 print(f"\nAverage of Column C: {sum(c_list)/len(c_list):.2f}") print(f"Average of Column D: {sum(d_list)/len(d_list):.2f}")
关键修改说明
- 计算逻辑修正:明确每列的计算规则(示例为基础运算,可按需替换),避免列表与数值的错误运算。
- 格式化输出:用
\t制表符对齐表头与数据,保证终端输出整齐;改用f-string实现字符串拼接,避免语法错误。 - 输入逻辑修正:移除输入字符串中的换行,用f-string简化输入提示文本。
- 数据存储优化:用三个独立列表分别存储Column C、D、E的结果,确保平均值计算准确。
- 平均值格式化:保留两位小数输出,提升结果可读性。
内容的提问来源于stack exchange,提问作者goldraker34
相关产品推荐
相关产品推荐

