所以我在这个页面中编写了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
答案 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)
现在应该没问题。