我是python新手我正在尝试为我的项目实现一个代码首先我的错误代码是'int'类型的对象没有len(),这是我的代码,添加了str来解决这个问题
xored_value = ord(Mblocks[i%len(Mblocks)]) ^ ord(Cblocks[i%len(Cblocks)])
现在我得到的是,如果在这行中,int对象是不可下标的
xored_value = ord(Mblocks[i%len(str(Mblocks))]) ^ ord(Cblocks[i%len(str(Cblocks))])
如果我把它改成
xored_value = ord(Mblocks(i%len(str(Mblocks)))=)) ^ ord(Cblocks(i%len(str(Cblocks))))
我得到'str' object is not callable
以下是我的全部功能:
def xor_two_str(Mblocks,Cblocks):
xored = []
for i in range(max(len(str(Mblocks)), len(str(Cblocks)))):
xored_value = ord(Mblocks[i%len(str(Mblocks))]) ^ ord(Cblocks[i%len(str(Cblocks))])
xored.append(hex(xored_value)[2:])
return ''.join(xored)
需要帮忙吗
Python需要^{} function 的字符串,这是:
Mblocks[i%len(str(Mblocks))]
试图从
int
Mblocks访问索引为i%len(str(Mblocks))
的元素,Python不允许这样做因此,您可以在函数开始时进行
str
转换,并从该点开始使用转换后的变量因此,我确信您传递的Mblocks和Cblocks参数是整数。由于它是一个整数,如果您尝试对它的一部分进行切片,您将得到TypeError
让我们逐件检查一下。 在第一种方法中:
因为Mblocks是整数,所以integer没有len函数
在变化2中, 您已更正第一个错误,但:
在变化3中:
在python中,{}只是调用一些东西。这里也发生了同样的事情
因此,最简单的解决方案是在处理任何东西之前制作的膜和Cbraces,如下所示:
相关问题 更多 >
编程相关推荐