You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:01:12