Практические занятия по курсу ОиМП/Группа 101 1 — различия между версиями
Melnichuk (обсуждение | вклад) (Изменение групп задач) |
Melnichuk (обсуждение | вклад) (Добавлен код примера) |
||
| Строка 75: | Строка 75: | ||
=== Множественное наследование и генераторы === | === Множественное наследование и генераторы === | ||
http://official.contest.yandex.ru/contest/675/<br> | http://official.contest.yandex.ru/contest/675/<br> | ||
| − | Всем нужно сдать задачу номер 0, а также любые другие две задачи. | + | Всем нужно сдать задачу номер 0, а также любые другие две задачи.<br> |
| + | <br> | ||
| + | Также советую еще раз попробовать осознать, что происходит вот в этом фрагменте кода: | ||
| + | |||
| + | 1 class MyType(type):<br> | ||
| + | 2 def __new__(cls, name, bases, dict):<br> | ||
| + | 3 print("New instance of %s will created be created with name %s, bases %s and params %s" % (cls.__name__, name, str(bases), str(dict)))<br> | ||
| + | 4 return type.__new__(cls, name, bases, dict)<br> | ||
| + | 5 def __init__(cls, name, bases, dict): <br> | ||
| + | 6 print("And it this instance of %s class with name %s and bases %s will be initialized with params %s" % (cls.__name__, name, str(bases), str(dict)))<br> | ||
| + | 7 return super(MyType, cls).__init__(name, bases, dict)<br> | ||
| + | 8 <br> | ||
| + | 9 MyObject = MyType("MyObject", (), {}) <br> | ||
| + | 10 <br> | ||
| + | 11 class MyClass(MyObject):<br> | ||
| + | 12 def __init__(self, s):<br> | ||
| + | 13 print(s)<br> | ||
| + | 14 <br> | ||
| + | 15 mc = MyClass("parameter")<br> | ||
=== План последующих занятий === | === План последующих занятий === | ||
Версия 09:54, 21 сентября 2014
Содержание
Консольные команды Linux
- man <cmd> вывести помощь по команде (выход из помощи - :q)
- python3 <file> запустить скрипт на языке python3
- ls выводит содержимое текущей директории
- cd <path> переходит в указанную директорию
- mkdir <dirname> создает директорию
- mv <old_name> <new_name> переместить или просто переименовать файл
- rm <file> удаляет файл
- less <file> открыть просмотр файла в less (выход - :q)
- touch <file> создать пустой файл
- echo <str> вывести строку
- cat <file> вывести содержимое файла
- head <file> вывести начало файла
- tail <file> вывести конец файла
Немного о файловой системе
- "~" - ваша домашняя директория
- "." - текущая директория
- ".." - родительская директория
- "/" - корень диска
Таким образом, "~/./any_dir/../" --- это то же самое, что и "~/any_dir/..", и "~/", и "~", "/home/guest-.../", и "~/../guest-...". Здесь "..." обозначают какую-то строку, которая может меняться в силу текущих настроек Linux.
Перенаправление потоков
Каждая команда в Linux принимает поток stdin и генерирует два потока - поток вывода stdout и поток ошибок stderr.
Для перенаправления этих потоков служат символы "<", ">", ">>".
Например, команда "python3 script.py > output.txt" перенаправит stdout вашего скрипта в файл output.txt.
А команда "python3 script.py < input.txt" направит в ваше решение содержимое файла input.txt.
Конечно же, их можно комбинировать.
Важно заметить, что при использовании ">" уже имеющийся output.txt будет удален и появится новый output.txt.
Если вы хотите просто дописать строки в конец имеющегося файла, используйте ">>".
Конвейеры Linux
Один из наиболее мощных инструментов в консоли. Позволяет направить stdout предыдущей команды в stdin следующей. Пример:
cat sample.txt | grep -v "Test" | python3 solve.py >> result.txt
Здесь из файла sample.txt будут выброшены все строки, содержащие слово Test, а остальные будут направлены в ваш скрипт, после чего его результат допишется в конец файла result.txt.
Теперь приведу пример цикла:
for i in {1..10}; do echo $i | python3 solve.py; done
Этот цикл запустит ваше решение на всех числах от 1 до 10.
Пробный контест по вводу-выводу
http://official.contest.yandex.ru/contest/654/
Группы задач:
- 0 (Hello, world!)
- 1-6 (простые арифметические вычисления)
- 7-12 (условный оператор)
- 13-17 (циклы и делимость 1)
- 18-24 (циклы и делимость 2)
- 25-30 (системы счисления)
- 31-35 (прочее по циклам)
- 36-41 (форматированный вывод)
Из каждой группы надо решить по две задачи, а нулевую задачу нужно решить всем.
Контест по геометрии
Цель контеста --- знакомство с типами и перегрузкой операторов в Python.
http://official.contest.yandex.ru/contest/664/
Необходимо сдать хотя бы две задачи.
Контест по наследованию
Простейшие задачи на наследование в Python3.
Цель здесь --- это не решить эти задачи, а попробовать реализовать наследование.
http://official.contest.yandex.ru/contest/667/
Необходимо сдать обе задачи.
Контест по обработке текстов
Контест, связанный с лекционными материалами.
http://official.contest.yandex.ru/contest/669/
Группы задач:
- 0-8
- 9-14
Из каждой группы необходимо решить по две задачи.
Обратите внимание, что в этом контесте работает проверка PEP8!
Множественное наследование и генераторы
http://official.contest.yandex.ru/contest/675/
Всем нужно сдать задачу номер 0, а также любые другие две задачи.
Также советую еще раз попробовать осознать, что происходит вот в этом фрагменте кода:
1 class MyType(type):
2 def __new__(cls, name, bases, dict):
3 print("New instance of %s will created be created with name %s, bases %s and params %s" % (cls.__name__, name, str(bases), str(dict)))
4 return type.__new__(cls, name, bases, dict)
5 def __init__(cls, name, bases, dict):
6 print("And it this instance of %s class with name %s and bases %s will be initialized with params %s" % (cls.__name__, name, str(bases), str(dict)))
7 return super(MyType, cls).__init__(name, bases, dict)
8
9 MyObject = MyType("MyObject", (), {})
10
11 class MyClass(MyObject):
12 def __init__(self, s):
13 print(s)
14
15 mc = MyClass("parameter")
План последующих занятий
- Полезные мелочи: файловый ввод-вывод, кодеки, декораторы
- Полезные мелочи-2: исключения, замыкание функций, lambda-исчисление
- Графика