从 Python 中的 stdin 读取整数 [英] Reading in integer from stdin in Python

查看:58
本文介绍了从 Python 中的 stdin 读取整数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下一段代码,我从标准输入输入一个整数 n,将其转换为二进制,反转二进制字符串,然后转换回整数并输出.

导入系统def反向二进制():n = str(raw_input())bin_n = bin(n)[2:]revbin = "".join(list(reversed(bin_n)))返回 int(str(revbin),2)反向二进制()

但是,我收到此错误:

回溯(最近一次调用最后一次): 中的文件reversebinary.py",第 18 行反向二进制()文件reversebinary.py",第 14 行,反向二进制bin_n = bin(n)[2:]类型错误:str"对象不能解释为索引

我不确定是什么问题.

解决方案

您正在向 bin() 函数传递一个字符串:

<预><代码>>>>箱('10')回溯(最近一次调用最后一次):文件<stdin>",第 1 行,位于 <module>类型错误:str"对象不能解释为索引

改为给它一个整数:

<预><代码>>>>垃圾箱(10)'0b1010'

通过将 raw_input() 结果转换为 int():

n = int(raw_input())

提示:您可以通过给它一个负切片步幅来轻松反转字符串:

<预><代码>>>>'前进'[::-1]'抽屉'

因此您可以将函数简化为:

def reversebinary():n = int(raw_input())bin_n = bin(n)[2:]revbin = bin_n[::-1]返回整数(revbin,2)

甚至:

def reversebinary():n = int(raw_input())返回 int(bin(n)[:1:-1], 2)

I have the following piece of code where I take in an integer n from stdin, convert it to binary, reverse the binary string, then convert back to integer and output it.

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()

However, I'm getting this error:

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

I'm unsure what the problem is.

解决方案

You are passing a string to the bin() function:

>>> bin('10')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an index

Give it a integer instead:

>>> bin(10)
'0b1010'

by turning the raw_input() result to int():

n = int(raw_input())

Tip: you can easily reverse a string by giving it a negative slice stride:

>>> 'forward'[::-1]
'drawrof'

so you can simplify your function to:

def reversebinary():
    n = int(raw_input())
    bin_n = bin(n)[2:]
    revbin = bin_n[::-1]
    return int(revbin, 2)

or even:

def reversebinary():
    n = int(raw_input())
    return int(bin(n)[:1:-1], 2)

这篇关于从 Python 中的 stdin 读取整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆