Практические занятия по курсу ОиМП/Группа 101 1 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
м
м
Строка 79: Строка 79:
 
Также советую еще раз попробовать осознать, что происходит вот в этом фрагменте кода:
 
Также советую еще раз попробовать осознать, что происходит вот в этом фрагменте кода:
  
   1 class MyType(type):<br>
+
   1 class MyType(type):
   2        def __new__(cls, name, bases, dict):<br>
+
   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" <br>
+
   3                print("New instance of %s created with name %s, bases %s and params %s"                
   4                        % (cls.__name__, name, str(bases), str(dict)))<br>
+
   4                        % (cls.__name__, name, str(bases), str(dict)))
   5                return type.__new__(cls, name, bases, dict)<br>
+
   5                return type.__new__(cls, name, bases, dict)
   6        def __init__(cls, name, bases, dict):<br>
+
   6        def __init__(cls, name, bases, dict):
   7                print("And it this instance of %s class with name %s and bases %s will be initialized with params %s" <br>
+
   7                print("Instance of %s with name %s and bases %s initialized with params %s"                          
   8                        % (cls.__name__, name, str(bases), str(dict)))<br>
+
   8                        % (cls.__name__, name, str(bases), str(dict)))
   9                return super(MyType, cls).__init__(name, bases, dict)<br>
+
   9                return super(MyType, cls).__init__(name, bases, dict)
  10 <br>
+
  10  
  11 MyObject = MyType("MyObject", (), {})<br>
+
  11 MyObject = MyType("MyObject", (), {})
  12 <br>
+
  12  
  13 class MyClass(MyObject):<br>
+
  13 class MyClass(MyObject):
  14        def __init__(self, s):<br>
+
  14        def __init__(self, s):
  15                print(s)<br>
+
  15                print(s)
  16 <br>
+
  16  
  17 mc = MyClass("parameter")<br>
+
  17 mc = MyClass("parameter")
  
 
=== План последующих занятий ===
 
=== План последующих занятий ===

Версия 09:56, 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 created with name %s, bases %s and params %s"                 
 4                         % (cls.__name__, name, str(bases), str(dict)))
 5                 return type.__new__(cls, name, bases, dict)
 6         def __init__(cls, name, bases, dict):
 7                 print("Instance of %s with name %s and bases %s initialized with params %s"                           
 8                         % (cls.__name__, name, str(bases), str(dict)))
 9                 return super(MyType, cls).__init__(name, bases, dict)
10 
11 MyObject = MyType("MyObject", (), {})
12 
13 class MyClass(MyObject):
14         def __init__(self, s):
15                 print(s)
16 
17 mc = MyClass("parameter")

План последующих занятий

  • Полезные мелочи: файловый ввод-вывод, кодеки, декораторы
  • Полезные мелочи-2: исключения, замыкание функций, lambda-исчисление
  • Графика