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