Сделал 16 задание (исправил)

This commit is contained in:
parent 0a1a1726fe
commit 9f865c522d

View file

@ -1,68 +1,61 @@
''' ****** Задание 16 из 20 ********* ''' ****** Задание 16 из 20 *********
* У программистов особые отношения с двоичной системой счисления — ведь именно в ней работает вся цифровая техника. * Дети в поезде снова играют в любимую игру — считать зверей за окном.
Продолжим тренировки в статистической обработке данных и научимся анализировать числа с позиции их представления в двоичной системе. На этот раз их заинтересовало, что находится рядом с зайками. Поможем им разобраться!
Напишите программу, которая по списку целых чисел определяет: Напишите программу, которая по описанию придорожной местности находит все объекты, стоящие рядом с зайками — слева или справа от слова зайка.
количество разрядов;
количество единиц;
количество нулей.
Формат ввода Формат ввода
Вводится последовательность чисел, записанных через пробел. В каждой записано описание придорожной местности.
Конец ввода обозначается пустой строкой.
Формат вывода Формат вывода
Вывести список словарей с требуемой статистикой. Определите список увиденного рядом с зайками без повторений.
Порядок вывода не имеет значения.
Примечание Примечание
Вывод в примерах отформатирован только для визуальной наглядности. Считается, что объект находится рядом, если он записан справа или слева от требуемого.
Все пробельные символы при проверке игнорируются.
Порядок словарей обязан совпадать с порядком переданных чисел.
Порядок ключей в словаре не имеет значения.
Подсказка Подсказка
Напомним, что получить двоичное представление числа можно: Организуйте цикл не по описаниям, а по их индексам.
В следующих параграфах мы рассмотрим более комфортный способ обработки, но пока предлагаем потренироваться в уже изученном материале.
bin(number) - формирует строку, содержащую двоичное представление числа с префиксом 0b
f'{number:b}' - формирует строку, содержащую двоичное представление числа
Пример 1 Пример 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__": if __name__ == "__main__":
data = [] nearby_objects = set()
binary_strings = list(map(lambda x: bin(int(x))[2:], input().split()))
for binary in binary_strings: while True:
data.append({ line = input().split()
"digits": len(binary), if not line:
"units": binary.count('1'), break
"zeros": binary.count('0') for index, word in enumerate(line):
}) if word == 'зайка':
if index == 0:
nearby_objects.add(line[index + 1])
elif index == len(line) - 1:
nearby_objects.add(line[index - 1])
else:
nearby_objects.add(line[index - 1])
nearby_objects.add(line[index + 1])
print(data) for item in nearby_objects:
print(item)