Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 奇数类型错误:';int';对象是不可编辑的_Python - Fatal编程技术网

Python 奇数类型错误:';int';对象是不可编辑的

Python 奇数类型错误:';int';对象是不可编辑的,python,Python,因此,我在本页中用python编写了一些问题 代码在我的计算机上运行良好,但当我更新它时,我遇到了这个错误。 请注意,它的python 3.4.3 def flap_display(lines, rotors): baseString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ?!@#&()|<>.:=-+*/0123456789" res = [] baseLen = len(baseString) lineLen = le

因此,我在本页中用python编写了一些问题 代码在我的计算机上运行良好,但当我更新它时,我遇到了这个错误。 请注意,它的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]))
现在我想知道我的代码是否不正确,或者只是网站有问题。
问题解决了!感谢kuro先生

总和需要一个iterable:一系列项目,如列表。你给了它一个整数。如果要将转子中的所有整数相加,可以在循环外使用

carrier = sum(rotors)
除了代码之外,只需添加所需的项目:

载体=总和(转子[:lineLen])

这添加了转子的第一个行元素,允许您摆脱讨厌的if语句


您能否调整循环逻辑的其余部分以充分利用这一点?

Thr回溯应如下所示:

回溯(最近一次呼叫最后一次): 文件“test1.py”,第17行,在 打印(翻板显示(“CAT”、[1,13,27])) 文件“test1.py”,第10行,在flap_显示中 承运商=承运商+总额(转子[项目]) TypeError:“int”对象不可编辑

而且,正如追踪所说的那样

carrier =carrier + sum(rotors[item])
rotors[item]
显然是一个int,因此不能对其调用
sum
,因此出现错误

将上述行替换为:

carrier = carrier + rotors[item]
或者,跳过循环,然后执行以下操作:

carrier = sum(rotors)

现在应该没问题了。

完整的堆栈跟踪请说我很糟糕,我添加了它这是完整的跟踪?您在
转子[项目]
上使用的是
sum
,我相信是整数。因此,欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。关于您的问题,请我们参考非现场来源超出SO标准。我认为应该是
carrier=sum(rotors[:min(sLen,lineLen)]
您的建议很有价值,但我想知道您是否误解了我的想法?这是可能的,因为您没有解释您的“想法”。您的代码未记录。您可以通过yourself@Trinh丛明,在您提供的链接中,
rotors
是一个列表,其中只有一个元素,而这个元素又是一个列表是提供的。很抱歉,我不能跳过这个循环,因为它是我的方法的一部分。我想你写的,
carrier=carrier+rotors
,会产生你刚才提到的错误。我保证我写的是“carrier=carrier+rotors[item]”,但它不起作用!?
carrier = sum(rotors)