我是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”),而不是像我那样,用户必须点击第一个数字,然后输入,第二个,然后输入.. ....
感谢您的帮助。
答案 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()))
,但我个人认为列表理解更清晰。