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

求替换单个0为1的最长连续1时遇TypeError报错求助

解决「替换0为1后最长连续1个数」代码中的TypeError问题

错误信息

TypeError: 'int' object is not iterable

完整回溯栈

Traceback (most recent call last):
  File "main.py", line 23, in <module>
    ans = max(L+R+1)
TypeError: 'int' object is not iterable

出错的原代码

A = [0,1, 1, 1, 0, 1, 1, 1, 0 ,1, 0]
count = 0
for i in range(0, len(A)):
    if A[i] == 1:
        count = count +1
if count == len(A):
    print(count)
ans = 0
for i in range(0, len(A)):
    if A[i] == 0:
        L =0 
        R = 0
        for j in range(i-1, 0, -1):
            if A[j] == 1:
                L = L +1
            else:
                break
        for j in range(i+1,len(A)):
            if A[j] ==1:
                R = R +1
            else:
                break
        ans = max(L+R+1)
        print(ans)

错误原因

max()函数需要传入可迭代对象(比如列表、元组)或者多个参数,但你直接传入了单个整数L+R+1,这就触发了「int不可迭代」的错误。你的需求是更新当前的最大长度,应该拿当前计算出的L+R+1和已有的ans做比较,取最大值。

另外代码还有两个小问题:

  1. 第一个循环判断数组全为1的情况后,只打印count但没有终止程序,后续代码仍会执行;
  2. 向左统计连续1的循环range(i-1, 0, -1)结束值是0,会漏掉索引为0的元素,应该改成range(i-1, -1, -1)才能遍历到第一个元素。

修正后的代码

A = [0,1, 1, 1, 0, 1, 1, 1, 0 ,1, 0]
count = 0
for num in A:
    if num == 1:
        count +=1
# 全是1的话直接输出并退出
if count == len(A):
    print(count)
    exit()

max_length = 0
for i in range(len(A)):
    if A[i] == 0:
        left = 0 
        right = 0
        # 向左统计连续1的个数
        for j in range(i-1, -1, -1):
            if A[j] == 1:
                left +=1
            else:
                break
        # 向右统计连续1的个数
        for j in range(i+1, len(A)):
            if A[j] ==1:
                right +=1
            else:
                break
        # 更新最大长度
        max_length = max(max_length, left + right + 1)
print(max_length)

内容的提问来源于stack exchange,提问作者mayank goley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:22:23