Преобразование чисел в двоичное в Python - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь произвести вводимые значения, такие как 5, и получить двоичную версию этого значения, а также сообщить, сколько их единиц и нулей. Кто-нибудь знает, как я должен идти по этому поводу? А также как я могу отсортировать вывод

Десятичные двоичные нули

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()

Ответы [ 2 ]

3 голосов
/ 13 декабря 2011

Как насчет

n = 5
s = format(n, "b")
print(n, s, s.count("0"), s.count("1"))

Чтобы сделать это менее ограниченным способом со значительно меньшим количеством кода?

0 голосов
/ 13 декабря 2011

Есть более простое выражение:

>>> bin (5)
'0b1010'

'bin' можно использовать после Python 2.6

...