当前位置: 首页 > 面试题库 >

“ Int”对象不可迭代

阙星渊
2023-03-14
问题内容

我正在尝试运行一个for循环。这是我遇到问题的代码部分:

aldurstengd_ororka = {(18, 19, 20, 21, 22, 23, 24):1, (25):0.95, (26):0.90,
    (27):0.85, (28, 29):0.75, (30, 31):0.65, (32, 33):0.55, (34, 35):0.45,
    (36, 37):0.35, (40, 41, 42, 43, 44, 45):0.15, (46, 47, 48, 49, 50):0.10,
    (51, 52, 53, 54, 55):0.075, (56, 57, 58, 59, 60):0.05, (61, 62, 63, 64,
    65, 66):0.025}

for age in aldurstengd_ororka.keys():
    for item in age:
       if ororkualdur == item:
           baetur = baetur + ororkulifeyrir * aldurstengd_ororka([age])

因此,我的目的是遍历aldurstengd_ororka,对于字典中的每个“年龄”元组,我为元组中的每个“项目”运行另一个for循环。我得到的错误是

TypeError:“ int”对象不可迭代


问题答案:

如果aldurstengd_ororka是字典,则此表达式

aldurstengd_ororka([age])

是一个错误。也许您的意思是:

aldurstengd_ororka[(age)]

编辑:您看到的错误是非常有趣的,我确实使用此代码段重现了它:

for age in aldurstengd_ororka.keys():
    print 'age:', age 
    for item in age:
        print item

代码的输出为:

age: (32, 33)
32
33
age: (36, 37)
36
37
age: (51, 52, 53, 54, 55)
51
52
53
54
55
age: (61, 62, 63, 64, 65, 66)
61
62
63
64
65
66
age: (30, 31)
30
31
age: 25
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

/home/ma/mak/Documents/t.py in <module>()
      3 for age in aldurstengd_ororka.keys():
      4     print 'age:', age
----> 5     for item in age:
      6         print item
      7

TypeError: 'int' object is not iterable

因此,发生的事情是Python在将1个元素的元组分配给age变量时对其进行“解包”。因此,年龄(而不是(25)您所期望的)只是25……这有点奇怪。一种解决方法是执行以下操作:

for age in aldurstengd_ororka.keys():
    # if not tuple, make it a tuple:
    if not type(age) == type( (0,1) ): age = (age,)
    print 'age:', age 
    for item in age:
        print item


 类似资料:
  • 问题内容: …引发错误: 我想通过将每个数字相加来找出总数,例如110。1 + 1 + 0 =2。我该怎么做? 谢谢 问题答案: 首先,不要再调用-您正在将字符串转换为整数,这不是您想要的(您希望将每个字符视为自己的数字)。更改: 至: 现在这是一个数字字符串,您可以逐个数字地对其进行循环。 接下来,将一些初始值分配给-就像您现在的代码一样,由于您从未初始化它,因此将获得一个。大概您想在循环之前。

  • 问题内容: 我的问题与python中的sum函数有关。 所以我的代码是 我读到一个错误: 有人可以解释为什么会发生这种情况以及如何解决吗? 问题答案: 查看文档: sum(iterable [,开始]) 总和从左到右依次迭代一个项目,并返回总计。start默认为。可迭代项通常是数字,并且起始值不允许为字符串。 因此,您必须传递一个可迭代的参数,而不是整数! 应该可以正常工作。 此功能旨在在列表中存

  • 问题内容: 我正在尝试编写一个程序,该程序允许您输入班级中的学生人数,然后为每个学生输入3个测试成绩以计算平均值。我是编程新手,但会不断收到错误消息,我不了解它的含义或解决方法。这是我到目前为止所拥有的: 问题答案: 当你写 您的意图是“运行这段代码时间,我刚才输入的值在哪里”。但是在Python,你传递给事情一个声明需求是某种迭代对象的。在这种情况下,您想要的只是一个statement。这将生成

  • 问题内容: 我正在尝试迭代由numpy.linspace生成的值的数组: 这段代码在我的办公室计算机上工作正常,但是今天早上我坐下来在另一台机器上在家工作,出现了此错误: 只是一个浮点数数组,脚本在打印内容时没有问题-只是显然对它们进行了迭代。关于导致它损坏的原因的任何建议以及可能的解决方法? 问题答案: 给您一维NumPy数组。例如: 因此: 无法工作。您将需要某种二维数组,在第二维中具有两个元

  • 问题内容: 运行以下代码时,出现此错误“主循环’builtin_function_or_method’对象不可迭代”: 我有搜索stackoverflow,但是找不到我的问题的答案… 我检查了错别字,但找不到任何错误。请帮我! 问题答案: 直接回答 在这里的代码中: 更改为。 如果您想进一步了解此错误,请阅读以下内容: 调试时,最好删除try … except块,尤其是“ expect Excep

  • 问题内容: 给定以下整数和计算 结果是: 如何将输出舍入为整数? 问题答案: 给定以下整数和计算 结果是: 如何将输出舍入为整数?