Python中实现任意长度元组的中点求解函数
处理任意长度元组的中点计算函数实现
问题分析与代码重构
原代码的核心问题是把用户输入逻辑塞进了计算函数findMidpoint里,违背了单一职责原则。计算函数应该只专注于接收元组参数并返回中点结果,输入获取和测试逻辑要放在main函数中。
核心实现思路
计算任意长度元组的中点,本质是对两个元组对应位置的元素分别求平均值:
- 用
zip()函数配对两个元组的对应元素(若两个元组长度不一致,zip会以较短的为准,也可以主动添加长度校验避免这种情况) - 遍历每一对元素计算平均值,最后把结果转换成元组返回
完整实现代码
def findMidpoint(P: tuple, Q: tuple) -> tuple: # 可选:强制校验两个元组长度一致 if len(P) != len(Q): raise ValueError("两个元组的长度必须一致") # 计算对应位置元素的平均值,生成中点元组 midpoint = tuple((p + q) / 2 for p, q in zip(P, Q)) return midpoint def main(): # 获取用户输入并转换为元组 user_input1 = input('Enter space-separated integers: ') P = tuple(int(item) for item in user_input1.split()) user_input2 = input('Enter space-separated integers: ') Q = tuple(int(item) for item in user_input2.split()) try: result = findMidpoint(P, Q) print(f"两个元组的中点为: {result}") except ValueError as e: print(e) if __name__ == "__main__": main()
代码说明
- 职责拆分:
findMidpoint只负责计算逻辑,输入获取交给main,让函数复用性更强 - 任意长度适配:
zip()和生成器表达式的组合可以处理任意长度的元组(前提是两个元组长度一致) - 错误处理:添加长度校验,避免因元组长度不一致导致的计算偏差,同时捕获异常给出明确提示
- 类型提示:保留原代码的类型注解,提升代码可读性和可维护性
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

