Python:向用户询问列表var

时间:2013-10-31 19:10:08

标签: python list binary var

我是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”),而不是像我那样,用户必须点击第一个数字,然后输入,第二个,然后输入.. ....

感谢您的帮助。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 comprehension

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