1

我是 Python 的法国新手。我正在构建一个将二进制数(8位)转换为十进制数的程序。我在这:

s=0 
a=int(input()) 
b=int(input()) 
c=int(input()) 
d=int(input())
e=int(input()) 
f=int(input()) 
g=int(input()) 
h=int(input())
L=[a,b,c,d,e,f,g,h] 
for x in range(8):
    a=L[x]*(2**(7-x))
    s=s+a 
print(s)

但我希望用户必须直接点击他的二进制数(Fe:“01011101”),而不是像我那样,用户必须点击第一个数字,然后输入,第二个,然后输入..... .

谢谢你的帮助。

4

2 回答 2

2
numeric_base = 2
print int(raw_input("Enter Binary Number:"),numeric_base)

或在 python 3 中

print( int(input("enter binary number:"),numeric_base) )

你也可以做十六进制并使用numeric_base=16或八进制并使用numeric_base=8

于 2013-10-31T19:19:30.543 回答
2

正如 Joran Beasley 所指出的,在您的特定情况下,您可以简单地使用int将您的脚本转换为单行(尽管为了清楚起见他选择使用两个)。

但是,这里是你如何压缩所有这些int(input())你想要的:

s=0
L=[int(c) for c in input()]
for x in range(8):
    a=L[x]*(2**(7-x))
    # This is the same as "s=s+a"
    s+=a 
print(s)

基本上,使用列表理解

注意:您也可以这样做list(map(int, input())),但我个人认为列表理解更清晰。

于 2013-10-31T19:30:02.087 回答