从Python中的stdin读取整数

我有以下代码,其中我从stdin中获取一个整数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

我不确定是什么问题。


www说
浏览 251回答 3
3回答

慕工程0101907

您正在将字符串传递给bin()函数:>>> bin('10')Traceback (most recent call last):&nbsp; 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():&nbsp; &nbsp; n = int(raw_input())&nbsp; &nbsp; bin_n = bin(n)[2:]&nbsp; &nbsp; revbin = bin_n[::-1]&nbsp; &nbsp; return int(revbin, 2)甚至:def reversebinary():&nbsp; &nbsp; n = int(raw_input())&nbsp; &nbsp; return int(bin(n)[:1:-1], 2)

蓝山帝景

您想将输入转换为整数而不是字符串-它已经是字符串。所以这行:n&nbsp;=&nbsp;str(raw_input())应该是这样的:n&nbsp;=&nbsp;int(raw_input())

SMILET

它是原始输入,即字符串,但您需要一个int:bin_n&nbsp;=&nbsp;bin(int(n))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python