project_python.3.2/lesson.16.py

72 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

''' ****** Задание 16 из 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)