- •Формальные языки записи алгоритмов
- •Трансляторы и интерпретаторы языков программирования
- •Зачем нужно уметь программировать?
- •Комментарии к коду
- •Комментарии к коду
- •Экзотические языки программирования Специальные, экзотические и эзотерические языки программирования
- •Эзотерические языки программирования
- •О языке Python
- •Интерпретация и компиляция
- •Алгоритм работы простого интерпретатора:
- •Рекомендуемая литература
- •Ввод-вывод в Python Ввод данных
- •Вывод данных
- •Установка Python и сред разработки
- •Установка интерпретатора
- •Установка интегрированной среды разработки
- •Cреда программирования wing ide
- •Ключевые слова и идентификаторы в Python Идентификаторы
- •Ключевые слова
- •Концепция присваивания
- •Функция определения длины строки в Python
- •Литералы строк в Python
- •Срезы строк в Python
- •Примеры срезов
- •Методы строк в Python
- •Методы find и rfind
- •Метод replace
- •Метод count
- •Работа с тестирующей системой
- •Задачи поиска, замены и удаления подстроки в строке в Python
- •Метод replace
- •Метод count
- •Удаление подстроки
- •Числа с плавающей точкой (вещественные)
- •Основные операции с вещественными числами
- •Логический тип (bool) в Python
- •Логические операции
- •Принцип условного исполнения
- •Условная инструкция в Python
- •Вложенные условные инструкции
- •Операторы сравнения
- •Логические операторы
- •Каскадные условные инструкции
- •Инструкция pass в Python
- •Инструкции управления циклом в Python
- •Цикл while в Python
- •Вывод числа с обратным порядком цифр и в заданной системе счисления
- •Тест простоты
- •Проверка простоты перебором делителей
- •Факторизация перебором делителей
- •Факторизация перебором делителей на python
- •Факторизация перебором делителей на pascal
- •Разложение числа на множители в Python
- •Алгоритм Евклида: Python
- •Проверка числа на простоту в Python
- •Функция range
- •Фильтрация потока чисел
- •Поиск числа в потоке на Python
- •Поиск максимального и минимального числа в потоке на Python
- •Генерация псевдослучайных чисел
- •Детерминированные генераторы
- •Обработка исключений
- •Генерация исключений
- •"Страхование" от ошибок
- •Функции в программировании
- •Важное дополнение
- •Как написать хорошую функцию
- •Преимущества структурного программирования
- •Без использования структурного программирования
- •С использованием структурного программирования
- •Задания
- •Данная программа ищет самый популярный фильм среди данных
- •Функции в Python
- •Вызов функции и возврат значения
- •Передача параметров в функцию
- •Примеры
- •Граф вызовов функций
- •Пример на языке си
- •Что вернет функция a() в место своего вызова?
- •В каком порядке будут напечатаны X() started и X() finished для a, b, c, d?
- •Стек вызовов
- •Области видимости переменных в Python
- •Правила видимости имен
- •Пример перекрытия областей видимости
- •Доступ на присваивание к нелокальным именам
- •Полиморфизм функций в Python
- •Контрольные вопросы
- •Решение
- •Решение
- •Математические функции в Python
- •Функции в библиотеке math
- •Степенные и логарифмические функции
- •Тригонометрические функции
- •Радианы в градусы и наоборот
- •Пример программы с математическими функциями
- •Кортежи в Python Кортежи в Python
- •Кортежи в логическом контексте
- •Присваивание нескольких значений за раз
- •Методы split и join для списка строк в Python
- •Списки в Python
- •Сортировка выбором
- •Пример сортировки выбором минимума на си
- •Пример сортировки выбором минимума на python
- •Пример сортировки выбором минимума на pascal
- •Сортировка методом пузырька
- •Реализация сортировки массива методом пузырька на языке python
- •Реализация сортировки массива методом пузырька на языке pascal
- •Модернизация сортировки методом пузырька
- •Случайное перемешивание массива в Python
- •Сортировка подсчетом
- •Пример сортировки подсчетом на python
- •Пример сортировки подсчетом на языке си
- •Пример сортировки подсчетом на языке pascal
- •Генерация псевдослучайных чисел
- •Детерминированные генераторы
- •Вычисление суммы натуральных чисел от 1 до n
- •Проверка строки на палиндромность
- •Суммирование списка
- •Наибольшее значение в списке
- •Числа фибоначчи
- •Быстрое возведение в степень
- •Ханойские башни
- •Ограничение на глубину рекурсии
- •Стиль программирования (для Python)
- •Основные правила pep 8: Форматирование
- •Комментарии
- •Функции
- •Работа с текстовыми файлами в Python открытие файла
- •Чтение данных из файла
- •Вывод данных в файл
- •Закрытие файла
- •Двумерные массивы в Python
- •Создание вложенных списков
- •Ввод двумерного массива
- •Пример обработки двумерного массива
- •Вложенные генераторы двумерных массивов
- •Генераторы таблиц
- •Вычисление произведения матриц
- •Многомерные списки в Python обработка и вывод вложенных списков
- •Создание двумерного списка
- •Ввод двумерного списка
- •Сложный пример обработки двумерной таблицы
- •Множества в Python
- •Создание множества
- •Изменение множества
- •Удаление элементов множества
- •Основные операции с множествами
- •Множества в логическом контексте
- •Множества
- •Задание множеств
- •Работа с элементами множеств
- •Перебор элементов множества
- •Операции с множествами
- •Словари (ассоциативные массивы) в Python
- •Когда нужно использовать словари
- •Создание словаря
- •Работа с элементами словаря
- •Перебор элементов словаря
- •Словари со смешанными значениями
- •Пример хранения списков в словаре
- •Пример дешифрации текста после алфавитной замены
- •Дан текст:
- •Итог всех замен:
- •Итог всех замен:
- •Окончательный вариант:
- •Рекурсивный перебор
- •Перебор всех подмножеств
- •Перебор всех k-элементных подмножеств
- •Перебор всех перестановок
- •Одномерное динамическое программирование: количество способов Задача о кузнечике
- •Рекурсивное решение
- •Пример на языке python
- •Пример на языке pascal
- •Нерекурсивное решение
- •Пример на языке python
- •Пример на языке pascal
- •Модификации задачи о кузнечике
- •Пример на языке python
- •Пример на языке pascal
- •Пример на языке python
- •Пример на языке pascal
- •Одномерное динамическое программирование: наилучший способ задача о кузнечике со стоимостями
- •Пример на языке python
- •Пример на языке pascal
- •Восстановление ответа
- •Пример программы на языке python:
- •Пример программы на языке pascal:
- •Пример программы на языке python:
- •Пример программы на языке pascal:
- •Пример программы на языке python
- •Пример программы на языке pascal:
- •Линейные задачи
- •Рекурсивный перебор
- •Перебор всех подмножеств
- •Перебор всех k-элементных подмножеств
- •Перебор всех перестановок
- •Сортировка слиянием
- •Быстрая сортировка Хоара: Python
- •Асимптотика алгоритма
- •Объектно-ориентированное программирование
- •Классы в Python
- •Метод init
- •Создание экземпляров
- •Переменные экземпляра
- •Плановая обработка ошибок при помощи исключений в Python
- •Обработка исключений
- •Генерация исключений
- •“Страхование” от ошибок
- •Юнит-тестирование
- •Тестирование как этап разработки программы
- •Виджеты
- •Происхождение термина «виджет»
- •Типовые элементы интерфейса
- •Модуль tkinter Что такое tkinter?
- •Класс Tk
- •Общее для всех виджетов
- •Методы виджетов
- •"Системные" методы
- •Пример, часы:
- •Пример:
- •Основные виджеты
- •Методы виджета
- •Упаковщики
- •Привязка событий
- •Изображения
- •Пошаговые инструкции
- •Математические функции в Python
- •Функции в библиотеке math
- •Степенные и логарифмические функции
- •Тригонометрические функции
- •Радианы в градусы и наоборот
- •Пример программы с математическими функциями
- •Массивы чисел в модуле math Массивы чисел
- •Векторы
- •Математические операции над векторами
- •Векторные функции
- •Использование списков
- •Основы Numerical Python
- •К слову, о срезах
- •Задание координат и значений функций
- •Векторизация
- •Визуализация функций в Matplotlib
- •Набор точек
- •Функция
- •Украшения
- •Несколько кривых
- •Маркеры
- •Дополнительные аргументы plot()
- •Сохранение файла
- •Гистограммы
- •Модуль os в Python
- •Текущий рабочий каталог
- •Работа с именами файлов и каталогов
- •Получение содержимого каталога
- •Получение сведений о файле
- •Получение абсолютных путей
- •Анализ аргументов командной строки в Python
- •Примеры без использования argparse
- •Использование библиотеки argparse
Установка Python и сред разработки
Для работы необходимо установить интерпретатор языка Питон и, для удобства написания программ, среду разработки.
Установка интерпретатора
Дистрибутивы для установки:
Windows, 32-бита: http://python.org/ftp/python/3.4.1/python-3.4.1.msi
Windows, 64-бита: http://python.org/ftp/python/3.4.1/python-3.4.1.amd64.msi
Дистрибутивы для Mac OS X есть на странице http://python.org/download/releases/3.4.1/
Для операционных систем GNU/Linux язык Питон скорее всего есть в дистрибутиве, для чего необходимо поставить пакет python3. Возможно, он уже установлен в вашей системе: проверить это можно командой python3.
Для Android есть пакет QPython3.
Установка интегрированной среды разработки
Для удобства разработки кода программисты используют среды разработки (IDE).
Для обучения программированию на языке Питон рекомендуется среда разработки Wing IDE 101. Для работы на занятиях будет использоваться WingIDE 101.
Для больших проектов рекомендуется PyCharm Community Edition.
WING IDE 101
Дистрибутив для Windows: http://wingware.com/pub/wingide-101/5.0.9/wingide-101-5.0.9-1.exe
Дистрибутивы для других операционных систем можно найти на http://wingware.com/downloads/wingide-101
Видео установки Python и Wing IDE 101 на Windows 7 (на английском): http://www.youtube.com/watch?v=OrpavIGbkSw
Обратите внимание: если вы устанавливаете среду после установки Python, то она должна сама обнаружить установленный Python. Если этого не произошло, пропишите в меню Edit-Configure python в верхнем поле ввода путь к исполняемому файлу Python (под windows это обычно что-то типа c:\python34\python.exe).
PYCHARM COMMUNITY EDITION
Версия для Windows: http://download.jetbrains.com/python/pycharm-community-3.4.1.exe
Остальные версии можно скачать здесь: http://www.jetbrains.com/pycharm/download/
Cреда программирования wing ide
Среда разработки Wing IDE — одна из самых распространенных сред, используемых сейчас в образовании и на олимпиадах. Ее версия Wing IDE 101 специально предназначена для обучения и не содержит ничего лишнего и отвлекающего. Для создания программы достаточно просто открыть среду, создать новый файл и начать писать код: не нужны никакие специальные настройки, не требуется создавать проект и т. п.
Wing IDE работает под основными платформами (Win, Mac, Linux), версию 101 можно бесплатно скачать и установить с сайта wingware.org.
Устанавливать среду нужно после установки транслятора Python.
Если среда не нашла или нашла не ту версию Python, укажите исполняемый файл Python вручную в меню Edit — Configure Python в верхнем поле ввода (обычно он имеет примерно такой вид: c:\python34\python.exe под Windows, /usr/local/bin/python3 под Mac, /usr/bin/python3 под Linux).
Запускать программы мы рекомендуем в режиме отладки, используя клавишу F5 или иконку с жуком. При этом при первом запуске вам предложат сохранить исходный код, а при каждом следующем запуске он будет сохраняться автоматически в тот же файл.
Ввод-вывод производится во вкладке Debug I/O, а сообщения об ошибках выводятся во вкладке Exceptions (исключения).
Переменные в Python
ОПРЕДЕЛЕНИЕ
Переменная — это простейшая именованная структура данных, в которой может быть сохранён промежуточный или конечный результат работы программы.
Переменную в Python создать очень просто — нужно присвоить некоторому идентификатору значение при помощи оператора присваивания «=».
ПРИМЕР
a = 10 b = 3.1415926 c = "Hello" d = [1, 2, 3]
В этом примере используются четыре переменные:
переменная a хранит значение типа int (целое число),
переменная b — типа float (действительное число),
переменная c — типа list (строка),
переменная d — типа list (список, в данном случае из трех целых чисел).
Никакого специального объявления переменных не требуется, первое присваивание переменной значения и является ее объявлением. Идентификатор в Python является "ссылкой" на хранимые в памяти данные.
Python — язык с динамической типизацией: каждая переменная в каждый момент времени имеет определенный тип, но этот тип может меняться по ходу выполнения программы, достаточно просто присвоить ей новое значение другого типа.
На самом деле переменная в python является лишь ссылкой на объект в памяти. При создании любой переменной (число, строка или массив) в неё записывается ссылка на объект, а сам объект находится где-то в оперативной памяти далеко от самой переменной со ссылкой. Таким образом, несколько переменных могут указывать на один объект, и при изменении объекта (например, списка) изменится результат обращения к нему с использованием каждой переменной.
Происходящее при выполнении следующего кода схематично можно изобразить так:
arr = [1, 2, 3]
