我正在尝试生成输入的值,例如5,并生成该值的二进制版本,并告诉它有多少1和0。有谁知道我应该怎么做?还有我如何对输出进行排序
5 101 2 1
def begin():
str=0
num = []
while num != -1:
num = int(input('Please enter some positive integers. Enter -1 to quit.\n'))
if num > 512:
str += 1
num-=512
else:
str += 0
if num > 256:
str += 1
num-=256
else:
str +=0
if num > 128:
str += 1
num-=128
else:
str +=0
if num > 64:
str += 1
num-=64
else:
str +=0
if num > 32:
str += 1
num-=32
else:
str +=0
if num > 16:
str += 1
num-=16
else:
str +=0
if num > 8:
str += 1
num-=8
else:
str +=0
if num > 4:
str += 1
num-=4
else:
str +=0
if num > 2:
str += 1
num-=2
else:
str+=0
if num > 1:
str += 1
num-=1
else:
str +=0
print('Decimal Binary\t\tOnes\tZeros')
print('--------------------------------------')
num.sort()
print(num)
begin()
答案 0 :(得分:3)
怎么样
n = 5
s = format(n, "b")
print(n, s, s.count("0"), s.count("1"))
以较少限制的方式执行此操作且代码少得多?
答案 1 :(得分:0)
有一个更简单的表达:
>>> bin(5)
'0b1010'
'bin'可以在python 2.6之后使用