所以我在代码中遇到错误时遇到了问题:“第30行,in (ciphertextBinary [i])[x] =“0” TypeError:'str'对象不支持项目分配“。 我不知道为什么会发生这种情况,因为我正在做的就是更改字符串的子文本并用字符串替换它。如果你能提出任何解决方案,那将是非常有必要的,因为我已经找了一段时间的答案,但没有成功。在我遇到这个错误之前:
Android Sdk
代码无法正常工作并返回输入,因此我将其更改为我认为会使其正常工作但却遇到此错误。
if (textBinary[i])[x] == (pad[i])[x]:
(ciphertextBinary[i])[x] = "0"
elif (textBinary[i])[x] != pad[i][x]:
(ciphertextBinary[i])[x] = "1"
答案 0 :(得分:3)
Python不允许您更改字符串中的单个字符。字符串在Python中被视为immutable type,就像数字或元组一样。因此,您尝试在字符串中执行字符串赋值有点像要求将数字8435
中的第三个数字更改为0
。相反,你可以做这样的事情:
(ciphertextBinary[i]) = (ciphertextBinary[i])[:x] + "0" + (ciphertextBinary[i])[x+1:]
这可以通过将您感兴趣的变量设置为等于字符x
的所有内容,加上新字符以及x
之后的所有字符来实现。
我希望这会有所帮助。
答案 1 :(得分:0)
字符串在python中是不可变的。如果 ciphertextBinary 很短,那么jonathanking的答案是有效的。
如果太长,您可能想先创建列表(这是可变的):
settings.txt