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

Python实现两数之和遇AttributeError错误,求解决方案

解决两数之和代码的AttributeError及逻辑问题

1. 解决直接报错:AttributeError: 'tuple' object has no attribute 'split'

  • 错误原因:你将输入的字符串转成了tuple,但split()是字符串类型专属方法,元组没有这个属性,所以触发报错。
  • 修复方法:删除t = tuple(n)这一行,直接对输入的字符串n调用split(','),即把nums = t.split(',')改为nums = n.split(',')。

2. 修正代码中的其他逻辑错误

原代码除了上述报错,还有多处逻辑问题需要修正:

  • nums是字符串列表,必须转换成整数列表,否则后续减法、数值比较都会出错
  • 变量k未定义,需要通过索引遍历获取元素位置
  • 原逻辑只检查第一个元素的补数,无法覆盖所有情况(比如目标和由数组中后两个元素组成的场景)

修正后的完整代码

def twoSum():
    # 读取输入并转换为整数数组
    n = input("请输入整数数组,用逗号分隔:")
    nums = list(map(int, n.split(',')))
    target = int(input("请输入目标值:"))
    
    # 用哈希表优化查找,时间复杂度O(n)
    num_index_map = {}
    for idx, num in enumerate(nums):
        complement = target - num
        if complement in num_index_map:
            print([num_index_map[complement], idx])
            return
        num_index_map[num] = idx
    
    # 未找到符合条件的数对时提示
    print("不存在和为目标值的两个数")

twoSum()

代码说明

  • list(map(int, n.split(','))):将输入的字符串分割后,批量转换为整数类型
  • 哈希表num_index_map存储已遍历数字的索引,每次计算当前数字的补数,若补数已在表中,直接返回对应的两个索引
  • 仅遍历一次数组,相比双重循环的O(n²),时间效率提升至O(n)

内容的提问来源于stack exchange,提问作者Rahul Yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:57:08