Python中如何单独使用函数返回的多个值?代码输出异常求助
问题解决
问题根源
你现在的代码有两个核心问题:
- 函数返回的是包含处理后列表和总和的元组,但主程序里直接把元组赋值给
x,然后两次打印x,导致输出重复元组,没法分开显示列表和总和。 - 删除6到9之间元素的逻辑太复杂,容易出错,还额外加了不必要的
None操作。
修正后的代码
def Summer_69(a): # 复制原列表,避免修改外部传入的原列表(可选,但更安全) processed_list = a.copy() if 6 in processed_list and 9 in processed_list: start_idx = processed_list.index(6) end_idx = processed_list.index(9) if end_idx > start_idx: # 直接用切片删除6到9(包含6和9)的区间 processed_list = processed_list[:start_idx] + processed_list[end_idx+1:] # 计算总和 total_sum = sum(processed_list) return processed_list, total_sum # 主程序 a = [] size = int(input("Enter size of the list : ")) for i in range(size): val = int(input("Enter values : ")) a.append(val) print("Original list : ", a) # 拆分函数返回的元组,分别接收处理后的列表和总和 new_list, total_sum = Summer_69(a) print("Summer 69 List : ", new_list) print('Sum : ', total_sum)
修改说明
- 把函数里复杂的删除逻辑改成列表切片,直接去掉6到9的区间,代码简洁且不易出错。
- 删掉了多余的
append(None)和remove(None)操作,完全没必要。 - 主程序里把函数返回的元组拆成两个变量,分别打印,符合你期望的输出格式。
- 给变量改了更清晰的名字(比如
size代替b,start_idx代替b),避免变量名混淆。 - 可选优化:用
processed_list = a.copy()复制原列表,避免函数修改外部传入的原列表,保持数据独立性。
内容的提问来源于stack exchange,提问作者Anmol Agrawal
相关产品推荐
相关产品推荐

