Задача 1: The Hidden Word/Скрытое слово

05.05.2020

«Основы программирования: ЯП Python»

Год обучения

Групповая работа

Тема: Total Commander: зачет. Повторение курса программирования

Цель: проверить знания о Total Commander.

Задачи обучающие:

· проверить знания о Total Commander;

· повторение курса программирования;

· систематизировать знания обучающихся по данной теме;

· закрепить знания, полученные на предыдущих уроках;

Задачи развивающие:

· развивать умения использовать знания, полученные на уроках информатики, в учебной деятельности;

· развивать логическое мышление, умение обобщать, сопоставлять и применять полученные знания на практике;

· развивать познавательную деятельность обучающихся, развивать умение анализировать происходящие изменения в решении задач;

· развивать познавательный интерес, творческую активность, интеллект;

· развивать интуицию, эрудицию, самостоятельность в суждениях, упорство в достижении цели;

· формирование информационной культуры и потребности приобретения знаний;

· стимулирование познавательного интереса обучающихся по данной теме и дисциплине Информатика и ИКТ в целом.

Задачи воспитательные:

· воспитание творческого подхода к работе, желания экспериментировать;

· профессиональная ориентация и подготовка к трудовой деятельности;

· воспитание информационной культуры, самостоятельности, ответственности;

· развивать культуру общения, воспитывать внимание, сообразительность, находчивость.

ХОД УРОКА

Теория

1) Ответьте на вопросы. Ответы оформите в виде файлов *.docx.

1) Перечислите возможности группового переименования.

2) Перечислите возможности синхронизации папок. Расположение в меню.

3) Перечислите возможности упаковки файлов.

4) Как выполнить разбивку файла на части? Как его склеить?

5) Перечислите возможности сравнения по содержимому файлов.

6) Группа файлов, её назначение и способы создания, преобразования и снятия.

7) Перечислите назначение клавиш от F1 до F10.

8) Перечислите способы копирования.

9) Назовите виды отображения данных в панелях, параметры сортировок.

10) Расскажите, как найти файл в текущей папке и по дискам.

11) Назначение фильтрации. Варианты создания и выбора фильтров.

12) Расскажите о возможностях печати.

2) Повторение курса программирования

Задача 1: The Hidden Word/Скрытое слово

Никола решил эту загадку (и я уверен, что вы справитесь с ней так же хорошо). Чтобы быть готовым к большему количеству таких головоломок, Никола хочет изобрести метод поиска слов внутри поэзии. Вы можете помочь ему создать функцию для поиска определенных слов.

Вам дается рифма (многострочная строка), в которой строки разделяются "новой строкой" (\n). Оболочка не имеет значения для вашего поиска, но пробелы должны быть удалены перед вашим поиском. Вы должны найти слово внутри рифмы в горизонтальных (слева направо) или вертикальных (сверху вниз) строках. Для этого вам нужно представить рифму в виде матрицы (2D массива). Найдите координаты слова в вырезанной рифме (без пробелов).

Результат должен быть представлен в виде списка -- [row_start, column_start,row_end, column_end], где

row_start - это номер строки для первой буквы слова.

column_start - это номер столбца для первой буквы слова.

row_end - это номер строки для последней буквы слова.

column_end - это номер столбца для последней буквы слова.

Подсчет строк и столбцов начинается с 1.

Ввод: два аргумента. Рифма как строка и слово как строка (строчные буквы).

Вывод: координаты слова.

Пример:

checkio(u"""DREAMING of apples on a wall,

And dreaming often, dear,

I dreamed that, if I counted all,

-How many would appear?""", u"ten") == [2, 14, 2, 16]

checkio("""He took his vorpal sword in hand:

Long time the manxome foe he sought--

So rested he by the Tumtum tree,

And stood awhile in thought.

And as in uffish thought he stood,

The Jabberwock, with eyes of flame,

Came whiffling through the tulgey wood,

And burbled as it came!""", "noir") == [4, 16, 7, 16]

Как он используется: эта задача показывает дисперсию позиционных шифров. С помощью этого шифра вы можете скрыть сообщение в книге, которая позволяет вам и получателю отправлять эти закодированные сообщения.

Предварительное условие: слово дается в нижнем регистре

 

Решение:

def checkio(text, word):

text = text.lower().replace(" ","")

a = text.split("\n")

n = len(a)

m = max([len(row) for row in a])

a = [a[i]+" "*(m-len(a[i])) for i in range(n)]

result = []

i = 0

j = -1

while i < n:

   j = a[i].find(word[0], j+1)

   if j >= 0:

       if a[i].find(word) >= 0:

           result = [i+1, j+1, i+1, j+len(word)]

           break

       else:

           k = i

           while k<n and k-i<len(word) and a[k][j]==word[k-i]:

               k += 1

           if k-i == len(word):

               result = [i+1, j+1, i+len(word), j+1]

               break

   else:

       j = -1

       i += 1

return result

 

#These "asserts" using only for self-checking and not necessary for auto-testing

if __name__ == '__main__':

assert checkio("""DREAMING of apples on a wall,

And dreaming often, dear,

I dreamed that, if I counted all,

-How many would appear?""", "ten") == [2, 14, 2, 16]

assert checkio("""He took his vorpal sword in hand:

Long time the manxome foe he sought--

So rested he by the Tumtum tree,

And stood awhile in thought.

And as in uffish thought he stood,

The Jabberwock, with eyes of flame,

Came whiffling through the tulgey wood,

And burbled as it came!""", "noir") == [4, 16, 7, 16]

 

Задача 3:   YAML. Simple Dict/Пример словаря

Ты когда нибудь слышал о таком языке разметки как YAML? Он представляет собой дружественный формат сериализации данных. На столько дружественный, что его стало удобно читать и людям и программам. Поиграться с самим стандартом можно перейдя по этой ссылке.

YAML - это текст, а вам надо преобразовать его в объект. Но я не прошу вас реализовывать весь стандарт YAML, мы будем реализовывать его шаг за шагом.

Первый шаг - это преобразование ключ-значение. Ключом может быть любая строка, из латинских букв и цифр. Значением может быть однострочная строка (которая состоит из пробелов, латинских букв и цифр) или число (int).

Покажу несколько примеров:

name: Alex

age: 12

Преобразуется в объект.

{

"name": "Alex",

"age": 12

}

Обратите внимание, что число автоматически получило тип int.

Еще один пример показывает, что строка может содержать пробелы:

name: Alex Fox

age: 12

 

class: 12b

Будет преобразован в следующий объект.

{

"age": 12,

"name": "Alex Fox",

"class": "12b"

}

Обратите внимание на несколько вещей. Между строкой "age" и строкой "class" есть пустая строка, которая не мешает парсингу. Класс начинается с цифр, но имеет буквы, а значит не может быть преобразован в цифры, поэтому его тип остался строкой (str).

Входные данные: Строка в формате

Выходные данные: Объект.

Пример:

yaml('name: Alex

age: 12') == {'age': 12, 'name': 'Alex'}

yaml('name: Alex Fox

'

'age: 12

'

'

'

'class: 12b') == {'age': 12,

'class': '12b',

'name': 'Alex Fox'}

Предварительное условие: Используется стандарт YAML версии 1.2


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: