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

Python统计回文子串求和时报TypeError:int对象不可迭代错误

报错根因

触发TypeError: 'int' object is not iterable是三个问题叠加导致的:

  • 变量作用域不匹配:palindrome3是定义在repetition()函数内部for循环的局部变量,函数外部无法访问该变量
  • sum()函数用法错误:sum()要求传入可迭代对象(列表、元组等),len(palindrome3)返回值是单个整数,整数本身不可迭代,直接传入sum()必然报错
  • 函数无返回值:原repetition()函数仅执行打印操作,没有把每轮的回文统计结果对外输出,无法做跨轮次累加
修复方案

调整函数逻辑,在函数内部完成20轮实验的计数累加,最终返回三类回文的总计数,再基于总计数计算出现概率即可,不需要在函数外部访问内部局部变量。

修复后的可运行代码如下:

import random
import re

def repetition(run_times=20):
    total_p3 = 0
    total_p4 = 0
    total_p5 = 0
    print('轮次','长度3回文数','长度4回文数','长度5回文数')
    for e in range(run_times):
        # 生成长度为36的随机序列
        seq = ''.join(random.choice('abcdg') for i in range(36))
        secuencia = seq

        # 统计长度3回文
        num3 = r'(?=(.{%d}))' % 3
        length3 = re.findall(num3, secuencia)
        palindrome3 = list(filter(lambda x: x == x[::-1], length3))
        cnt3 = len(palindrome3)
        total_p3 += cnt3

        # 统计长度4回文
        num4 = r'(?=(.{%d}))' % 4
        length4 = re.findall(num4, secuencia)
        palindrome4 = list(filter(lambda x: x == x[::-1], length4))
        cnt4 = len(palindrome4)
        total_p4 += cnt4

        # 统计长度5回文
        num5 = r'(?=(.{%d}))' % 5
        length5 = re.findall(num5, secuencia)
        palindrome5 = list(filter(lambda x: x == x[::-1], length5))
        cnt5 = len(palindrome5)
        total_p5 += cnt5

        print(e+1, cnt3, cnt4, cnt5)
    return total_p3, total_p4, total_p5

# 运行20次实验拿到累加结果
sum_p3, sum_p4, sum_p5 = repetition(20)

# 计算各长度子串总样本量,求概率
total_sub3 = 20 * (36 - 3 + 1)
total_sub4 = 20 * (36 - 4 + 1)
total_sub5 = 20 * (36 - 5 + 1)

print("\n=== 20次实验统计结果 ===")
print(f"长度3回文累计出现{sum_p3}次,出现概率{sum_p3 / total_sub3:.4f}")
print(f"长度4回文累计出现{sum_p4}次,出现概率{sum_p4 / total_sub4:.4f}")
print(f"长度5回文累计出现{sum_p5}次,出现概率{sum_p5 / total_sub5:.4f}")
代码改动说明
  • 移除了函数外部无效的sum()调用,直接在循环内完成计数累加,从根源避免整数不可迭代的报错
  • 给函数增加返回值,对外输出20轮实验的累计回文数,解决局部变量外部无法访问的问题
  • 用字符串切片x[::-1]替换原有的反转写法,回文判断执行效率更高
  • 补充了概率计算逻辑,运行后可直接得到需要的统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:21:27