我有以下代码,其中我从stdin中获取一个整数n,将其转换为二进制,反转二进制字符串,然后转换回整数并输出。import sysdef reversebinary(): n = str(raw_input()) bin_n = bin(n)[2:] revbin = "".join(list(reversed(bin_n))) return int(str(revbin),2)reversebinary()但是,我收到此错误:Traceback (most recent call last): File "reversebinary.py", line 18, in <module> reversebinary() File "reversebinary.py", line 14, in reversebinary bin_n = bin(n)[2:] TypeError: 'str' object cannot be interpreted as an index我不确定是什么问题。
3 回答

慕工程0101907
TA贡献1887条经验 获得超5个赞
您正在将字符串传递给bin()函数:
>>> bin('10')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an index
给它一个整数来代替:
>>> bin(10)
'0b1010'
通过将raw_input()结果转换为int():
n = int(raw_input())
提示:您可以通过给负片跨度轻松地反转字符串:
>>> 'forward'[::-1]
'drawrof'
因此您可以将功能简化为:
def reversebinary():
n = int(raw_input())
bin_n = bin(n)[2:]
revbin = bin_n[::-1]
return int(revbin, 2)
甚至:
def reversebinary():
n = int(raw_input())
return int(bin(n)[:1:-1], 2)

蓝山帝景
TA贡献1843条经验 获得超7个赞
您想将输入转换为整数而不是字符串-它已经是字符串。所以这行:
n = str(raw_input())
应该是这样的:
n = int(raw_input())
添加回答
举报
0/150
提交
取消