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

Python新手求助:TypeError: 'int'对象不可迭代问题排查

解决Powerball彩票匹配计数的错误问题

嘿,作为Python新手遇到这种报错很正常,我来帮你拆解一下问题根源,以及怎么修复它:

1. 报错的直接原因:计数器类型不对

你把计数器c初始化成了列表c = [],但统计匹配数量需要的是整数类型。当你执行c += 1时,Python会认为你想给列表添加元素,但+=对列表要求右边是可迭代对象(比如[1]),而整数1不是可迭代的,所以就抛出了TypeError: argument of type 'int' is not iterable这个错误。

2. 隐藏的逻辑错误:循环写法完全错了

你原本写的嵌套循环:

for i in powerball:
    for i in choices:
        c += 1

会把powerball里的每个元素和choices里的每个元素都遍历一遍,最终得到的是6*6=36的计数,这完全不是统计“匹配号码数量”的逻辑。正确的做法应该是:遍历每一个获奖号码,检查它是否在用户选的号码里,每匹配一个就把计数器加1。

修正后的完整可运行代码

import random  # 注意!你的原代码漏了这个导入,运行会报NameError

def playPowerball():
    powerball = []
    choices = []
    c = 0  # 把计数器改成整数0,而不是空列表
    # 生成不重复的获奖号码
    while len(powerball) < 6:
        number = random.randint(1,64)
        if number not in powerball:
            powerball.append(number)
    # 获取用户的6个不重复选择
    while len(choices) < 6:
        pick = int(raw_input('Pick a number between 1 and 64: '))
        if pick not in choices:
            choices.append(pick)
    # 统计匹配的号码数量
    for winning_num in powerball:
        if winning_num in choices:
            c += 1
    # 优化打印语句,让结果更清晰
    print(f'You have {c} correct numbers!')
    print(f'Winning numbers: {powerball}')
    print(f'Your picks: {choices}')

# 别忘了调用函数才能运行哦
playPowerball()

额外小提示

  • 如果你用的是Python 3,要把raw_input()改成input(),不然会报错
  • 打印语句我用了f-string(Python3.6+支持),比原来的写法更直观易读
  • 变量名可以更语义化一点,比如把i改成winning_num,代码可读性会更高

看到你说已经解决问题啦,不过还是把完整的修正思路和代码整理出来,方便你或者其他新手参考~

内容的提问来源于stack exchange,提问作者John Monahan John Mon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:39:27