O. Двоичная статистика!

У программистов особые отношения с двоичной системой счисления.
Продолжим тренировки в статистической обработке данных и проанализируем данные числа.
Напишите программу, которая для переданных чисел вычисляет:

  • количество разрядов;
  • количество единиц;
  • количество нулей.

Формат ввода

Вводится последовательность чисел, записанных через пробел.

Формат вывода:

Вывести список словарей с требуемой статистикой.

Примечание

Вывод в примерах отформатирован только для визуальной наглядности.
Все пробельные символы при проверке игнорируются.
Порядок словарей обязан совпадать с порядком переданных чисел.
Порядок ключей в словаре не имеет значения.

Пример

Ввод

5 8 12

Вывод

[
    {
        "digits": 3,
        "units": 2,
        "zeros": 1
    },
    {
        "digits": 4,
        "units": 1,
        "zeros": 3
    },
    {
        "digits": 4,
        "units": 2,
        "zeros": 2
    }
]

Ввод

13 2 7

Вывод

[
    {
        "digits": 4,
        "units": 3,
        "zeros": 1
    },
    {
        "digits": 2,
        "units": 1,
        "zeros": 1
    },
    {
        "digits": 3,
        "units": 3,
        "zeros": 0
    }
]

Решение

Считываем строку и разбиваем ее на числа (токены).
С помощью знаний полученных из задания T. Математическая выгода переводим число в двоичную систему счисления.
Считаем получившиеся единицы и нули и увеличиваем счетчик в словаре.
По окончании перевода, заполняем поле количество цифр, записав туда сумму полученных нулей и единиц. Добавляем словарик в список.
По окончании цикла выводим словарь без форматирования.

Посмотреть код

Решение

Python
numbers = input().split()
total = []
result = dict()

for item in numbers:
    units = zeros = 0
    number = int(item)

    while number > 0:
        if number % 2:
            units += 1
        else:
            zeros += 1
        number = number // 2
    result['digits'] = zeros + units
    result['units'] = units
    result['zeros'] = zeros
    total.append(result.copy())

print(total)

Решение

Python
numbers = input().split()
total = []
result = dict()

for item in numbers:
    units = zeros = 0
    number = f'{int(item):b}'

    result['digits'] = len(number)
    result['units'] = number.count('1')
    result['zeros'] = number.count('0')
    total.append(result.copy())

print(total)
Подписаться
Уведомить о
guest
4 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии