为了账号安全,请及时绑定邮箱和手机立即绑定

从Python中的stdin读取整数

从Python中的stdin读取整数

www说 2021-03-14 12:09:45
我有以下代码,其中我从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)


查看完整回答
反对 回复 2021-03-29
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您想将输入转换为整数而不是字符串-它已经是字符串。所以这行:

n = str(raw_input())

应该是这样的:

n = int(raw_input())


查看完整回答
反对 回复 2021-03-29
?
SMILET

TA贡献1796条经验 获得超4个赞

它是原始输入,即字符串,但您需要一个int:

bin_n = bin(int(n))


查看完整回答
反对 回复 2021-03-29
  • 3 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号