当前位置: 首页 > 知识库问答 >
问题:

为什么我用Python编写的反向位代码会出现这个错误?

袁耀
2023-03-14

我得到这个问题在Leetcode:https://leetcode.com/problems/reverse-bits/

所以输入将是一个十进制整数,我必须把它变成二进制32位。

然后我把它倒过来,回到小数点。

例如:

输入:

8 (whose binary == 1000)

输出:

1 (whose binary == 0001)

这是我的代码:

# n is input number
str1 = str('{0:0{1}b}'.format(n,32))
len_str = len(str1)
index_swap = len_str - 1
result = [0] * len_str

for i, char in enumerate(str1):
    result[index_swap-i] = char

return int(str(''.join(result)),2)

如果我运行此代码在Leetcode在线法官,我会得到这个错误:

TypeError: sequence item 0: expected string, int found

此错误由输入0引发。

我不知道为什么会出现这个错误。我的代码似乎运行良好!

共有2个答案

沈琨
2023-03-14
# There ...
a = 8
b = "{0:b}".format(8)[::-1]
print(type(b), b)

# and back again.
c = int(b[::-1], base=2)
print(type(c), c)

输出

<class 'str'> 0001
<class 'int'> 8

另请参见Python中的字符串反转

戚飞
2023-03-14
result = [0] * len_str

len_str是一个int,但应为字符串。那一行应该怎么办?也许 吧:

result = [''  for x in xrange(len_str)]

初始化一个大小为len_str

 类似资料: