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

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

View file

@ -1,68 +1,61 @@
''' ****** Задание 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()))
nearby_objects = set()
for binary in binary_strings:
data.append({
"digits": len(binary),
"units": binary.count('1'),
"zeros": binary.count('0')
})
while True:
line = input().split()
if not line:
break
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)