奇怪的TypeError:'int'对象不可迭代

时间:2017-04-11 17:40:26

标签: python

所以我在这个页面中编写了python中的一些问题 https://www.codewars.com/kata/airport-arrivals-slash-departures-number-1/train/python 代码在我的计算机上工作正常但是当我更新它时,我遇到了这个bug。 请注意其python 3.4.3

def flap_display(lines, rotors):
    baseString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ?!@#&()|<>.:=-+*/0123456789"
    res = []
    baseLen = len(baseString)
    lineLen = len(lines)
    sLen = len(rotors)
    carrier = 0
    for item in range(0 , sLen):
        if (item < lineLen):
            carrier =carrier + rotors[item]
        tmp = baseString.index(lines[item])
        tmp = tmp + carrier
        tmp = tmp % baseLen
        res.append( baseString[tmp] )
    resS = ''.join(res)
    return resS
    print (flap_display("CAT", [1,13,27]))

所有网站给我的是:

Traceback:
in 
in flap_display
TypeError: unsupported operand type(s) for +: 'int' and 'list'

现在我想知道我的代码是不正确还是只是网站有问题。 问题解决了!感谢mr.kuro

2 个答案:

答案 0 :(得分:0)

sum 需要一个iterable:一系列项目,例如列表。你给它一个整数。如果你想将转子中的所有整数相加,你可以在循环之外进行,

carrier = sum(rotors)

更多代码,只需添加您想要的项目:

carrier = sum(rotors [:lineLen])

这会添加转子的第一个 lineLen 元素,让您摆脱那些讨厌的 if 语句。

你能否适应其余的循环逻辑以适当利用它?

答案 1 :(得分:0)

回溯应如下所示:

  

追踪(最近一次通话):     文件&#34; test1.py&#34;,第17行,in       print(flap_display(&#34; CAT&#34;,[1,13,27]))     文件&#34; test1.py&#34;,第10行,在flap_display中       carrier = carrier + sum(转子[item])   TypeError:&#39; int&#39;对象不可迭代

并且,正如追溯所说,在行

carrier =carrier + sum(rotors[item])

rotors[item]显然是一个整数,因此您无法在其上调用sum,因此错误。

将以上行替换为:

carrier = carrier + rotors[item]

或者,只需跳过循环,然后执行:

carrier = sum(rotors)

现在应该没问题。