我有下面的代码,我从标准输入中获取整数 n,将其转换为二进制,反转二进制字符串,然后转换回整数并输出。
import sys
def 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
我不确定问题是什么。
最佳答案
您正在将字符串传递给 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)
关于python - 从 Python 中的 stdin 读取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16867405/