72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
''' ****** Задание 15 из 20 *********
|
||
* У программистов особые отношения с двоичной системой счисления — ведь именно в ней работает вся цифровая техника.
|
||
Продолжим тренировки в статистической обработке данных и научимся анализировать числа с позиции их представления в двоичной системе.
|
||
|
||
Напишите программу, которая по списку целых чисел определяет:
|
||
|
||
количество разрядов;
|
||
количество единиц;
|
||
количество нулей.
|
||
Формат ввода
|
||
Вводится последовательность чисел, записанных через пробел.
|
||
|
||
Формат вывода
|
||
Вывести список словарей с требуемой статистикой.
|
||
|
||
Примечание
|
||
Вывод в примерах отформатирован только для визуальной наглядности.
|
||
Все пробельные символы при проверке игнорируются.
|
||
Порядок словарей обязан совпадать с порядком переданных чисел.
|
||
Порядок ключей в словаре не имеет значения.
|
||
|
||
|
||
Подсказка
|
||
Напомним, что получить двоичное представление числа можно:
|
||
|
||
bin(number) - формирует строку, содержащую двоичное представление числа с префиксом 0b
|
||
f'{number:b}' - формирует строку, содержащую двоичное представление числа
|
||
Пример 1
|
||
Ввод
|
||
|
||
5 8 12
|
||
Вывод
|
||
|
||
[
|
||
{
|
||
"digits": 3,
|
||
"units": 2,
|
||
"zeros": 1
|
||
},
|
||
{
|
||
"digits": 4,
|
||
"units": 1,
|
||
"zeros": 3
|
||
},
|
||
{
|
||
"digits": 4,
|
||
"units": 2,
|
||
"zeros": 2
|
||
}
|
||
]
|
||
'''
|
||
|
||
|
||
if __name__ == "__main__":
|
||
data = []
|
||
binary_strings = list(map(lambda x: bin(int(x))[2:], input().split()))
|
||
|
||
for binary in binary_strings:
|
||
data.append({
|
||
"digits": len(binary),
|
||
"units": binary.count('1'),
|
||
"zeros": binary.count('0')
|
||
})
|
||
|
||
print(data)
|
||
|
||
|
||
|
||
|
||
|
||
|