Сделал 16 задание (исправил)
This commit is contained in:
parent
0a1a1726fe
commit
9f865c522d
77
lesson.16.py
77
lesson.16.py
|
|
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue