1

我目前正在用 Python 编写二进制翻译器。一切正常(从数字到二进制,从二进制到数字) - 只有一个问题。使用二进制到一个数字,我接受一个输入,但必须使用一个列表:

newBinary = []
Code = int(input()) #will receive something like 1001010

使用来自 Code 的信息,newBinary 必须看起来像这样:

[1, 0, 0, 1, 0, 1, 0]

我曾尝试找到一种将输入字符串转换为列表中单个字符的方法,但到目前为止还没有成功。

4

5 回答 5

2

int采用基数,Python 2.6 及更高版本有一个bin函数将返回数字的二进制表示:

>>> int("111", 2)
7
>>> bin(7)
'0b111'

注意:如果您使用的是 Python 2.N,请使用raw_input-input实际上是eval它给出的内容。

于 2012-11-03T14:43:21.477 回答
1

我不确定我是否理解这个问题,或者我的解决方案是最好的,但请尝试这样的事情:

newBinary=[]
Code=input()
for n in range(len(Code)):
    newBinary.append(int(Code[n]))
于 2012-11-03T14:45:36.430 回答
0

非常感谢大家!我最终使用了 MadsY 的 anwser 的修改版本:

Code=input("Give your Binary code:  ")

Length = len(Code)
Count = 0

while Count < Length:
    Bin[(-1 - len(Code) + Count + 1)] = Code[Count]
    Count = Count + 1

我没有意识到 String 对象也有 [n] 属性-我曾经将字符放在列表中=)

该程序现在终于完成了=)(是的,这是一个练习;))

于 2012-11-03T23:56:04.733 回答
0

不要int()在输入上使用,尝试这样的事情:

Python 2.x:

>>> strs=raw_input()
1001010
>>> map(int,strs)
[1, 0, 0, 1, 0, 1, 0]

Python 3.x:

>>> strs=input()
1001010
>>> list(map(int,strs))
[1, 0, 0, 1, 0, 1, 0]
于 2012-11-03T14:43:07.793 回答
0

正如其他人所提到的,如果你只是想从二进制转换为十进制,那么在现实生活中你应该这样做

>>> int('101', 2)
5

但我猜这是一个练习,而不是一个现实世界的问题,并且仅仅通过使用内置函数来绕过这个问题并不是你在询问时想到的解决方案。

您要求一种将字符串转换为字符列表的方法。答案很简单:

>>> list('1010101')
['1', '0', '1', '0', '1', '0', '1']

列表推导式也可以帮助你在这里简洁明了地做你想做的事情。例如,要从二进制字符串获取 1 和 0 作为 int 对象的列表:

>>> [int(char) for char in '10101']
[1, 0, 1, 0, 1]
于 2012-11-03T16:55:20.730 回答