Введение
	
	Начиная с 80-х годов претерпела значительные изменения в силу некоторых обстоятельств: наличия теоретической базы предмета и технического обеспечение кабинета информатики, значимость преподавания темы в период с 2000 года по 2005 год значительно снизилась. Уменьшилось количество уроков, отводимых на изучение этой темы в старших классах. Большая часть времени отводится на преподавание тем цикла «Информационные и коммуникационные технологии». Наряду с этим не изменились требования к уровню усвоения знаний и умений этого раздела программы по информатике, так как он остается основой фундаментальных знаний по предмету.
Углубленному изучению темы «Понятие алгоритма. Программирование» предмета всегда сопутствует преподавание факультативов, которые способствуют достижению достаточного теоретического и практического уровня.
В связи с вышесказанным в данной работе была поставлена следующая цель: разработать факультативный курс «Основы программирования на языке Pyhton» для обучающихся 10-11 классов.
Для выполнения поставленной цели было необходимо решить следующие задачи:
1.	Ознакомиться с алфавитом и синтаксисом языка Python.
2.	Определить темы и основные понятия факультативного курса «Основы программирования на языке Pyhton», адаптировать теоретический материал для учащихся 10-11 классов.
.	Разработать лабораторные работы, для закрепления пройденного материала и контрольные вопросы по теме курса.

1. Пояснительная записка

	Преподавание информатики в школах нашей страны фактически начиналось с преподавания программирования. В то время даже был провозглашен лозунг: «Программирование - это вторая грамотность». Заметим, что компьютеры в школах тогда практически отсутствовали. А та техника, которой оснащались школы в конце 80-х - начале 90-х годов прошлого века, практическую составляющую курса информатики все равно невольно сводила к программированию.
	Одновременно с революционным развитием аппаратного и программного обеспечения и оснащением современной компьютерной техникой учебных заведений курс информатики претерпел существенные изменения. Наиболее яркая характеристика такого изменения - вымывание программирования из школьного курса информатики. Основное внимание в большинстве школ стало уделяться освоению современных информационных технологий. Эти тенденции отражены и в новом «Стандарте по информатике», в котором собственно обучению программированию отводится очень мало времени. Но, как заметил А.Г. Гейн, «…очевидно, что именно алгоритмизация с самого начала вытянула на школьную арену курс информатики и ныне во многих реально существующих курсах информатики позволяет уйти от умных, но пустоватых разговоров к конкретному делу».
	Цель курса информатики - развитие алгоритмического стиля мышления как общей культуры ученика. Умение обращаться с компьютером или знание конкретных программных средств не входит непосредственные цели курса.
В современных программах принятых Министерством образования РФ предусматривается изучение следующих разделов на которые опирается наш факультативный курс:
·	Алгоритмический язык. На изучение данного раздела отводится 6 часов. Данный раздел включает рассмотрение следующих тем: Правила построения и выполнения алгоритмов. Разбиение задачи на подзадачи. Использование имен для алгоритмов и объектов. Примеры записи алгоритмов на алгоритмическом языке для графических и числовых исполнителей.
·	Вычислимые функции. На изучение данного раздела отводится 2 часа. В данном разделе рассматривается тема: Функции, вычисляемые алгоритмами.
Можно выставлять на участие в различных районных и краевых конкурсах.
В результате изучения информатики и ИКТ на профильном уровне ученик должен знать / понимать
·	основные конструкции языка программирования;
·	свойства алгоритма и основные алгоритмические конструкции;
·	тезис о полноте формализации понятия алгоритма;
В рамках, отводимых «Программой» в базовом курсе информатики на алгоритмизацию и программирование, овладение даже основами программирования на современных алгоритмических языках представляется невозможным. Тем не менее, контингент школьников, у которых интерес именно к изучению, а не знакомству с программированием высок, несомненно, существует. В первую очередь, это учащиеся физико-математических классов, гимназий, лицеев и гимназических классов общеобразовательных школ. У большинства из них есть как мотивация, так и способности к освоению программирования. Учебные планы подобных образовательных учреждений, в которых на освоение информатики и информационных технологий отводится не менее часа, начиная с 5-го класса, не менее двух - с 8-го и до четырех в 10-11-х классах, также играют положительную роль. Мотивация есть и у учителя - ведь большинство современных олимпиад по информатике являются по своей сути олимпиадами по программированию, а по успехам учеников в олимпиадах зачастую судят о квалификации учителя, хотя в случае с информатикой это далеко не бесспорно. Кроме того, любовь к программированию многие учителя информатики принесли из своей профессиональной деятельности, и, конечно же, им хочется передать эту любовь и своим ученикам.
Начинать преподавание программирования можно как в 7-8-х классах, так и в 9-10-х классах, при этом незначительно меняются задачи, решаемые на уроках, которые должны быть адаптированы к уровню математической подготовки учащихся. Отметим, что полноценные занятия можно проводить лишь тогда, когда на уроки информатики отводится не менее двух (спаренных) учебных часов в неделю. В противном случае изучение программирования лучше проводить в рамках факультатива.
Факультативный курс направлен на совершенствование практических навыков работы за компьютером и информационной компетенции учащихся с опорой на знания, полученные на уроках информатики. Он направлен на углубление знаний учащихся по теме «Алгоритмизация и программирование». Программа построена так, чтобы обеспечить преемственность с базовыми знаниями по информатике, полученными на уроках. Курс направлен на развитие общепредметных знаний.
Курс по информатике «Основы программирования на Python» представляет собой вводный курс по программированию, дающий представление о базовых понятиях структурного программирования (данных, операциях, переменных, ветвлениях в программе, циклах и функциях) на языке Python.
Выбор Python обусловлен тем, что это язык, обладающий рядом преимуществ перед другими языками для начинающих изучать программирование: ясность кода, быстрота реализации.
Курс рассчитан примерно на 16 часов.
Цели курса
Основной целью курса «Основы программирования на языке Python» является формирование базовых понятий структурного программирования, развитие логики обучающихся.
Факультативный курс призван развивать логическое мышление учащихся и аналитический стиль мышления начинающих программистов. Она предназначена для учащихся 10-11 классов.
За основу обучения учащихся по данному курсу следует взять программирование с максимальным использованием компьютера на занятиях, и при этом должен формироваться определенный стиль мыления.
Задачи курса:
- показать практическую значимость использования программирования для наглядного представления решения задач в различных областях жизнедеятельности человека;
- научить учащихся основам программирования с использованием системы программирования Python;
- научить составлению и оформлению программ в соответствии с нормативными требованиями языка программирования;
- содействовать развитию общей информационной культуры как одного из аспектов будущей профессиональной деятельности;
- развивать логическое и аналитическое мышление школьников.
Объем курса составляет 15 уроков, рассчитанных на 16 часов: 1 теоретический и 14 практических.
До изучения:
Учащиеся должны знать:
 понятие алгоритма как организованной последовательности действий, допустимых для некоторого исполнителя и записанной на формальном языке;
 свойства алгоритма;
 формы записи алгоритма;
 язык псевдокода;
 основные алгоритмические структуры;
 правила записи арифметических выражений;
Учащиеся должны уметь:
 составлять алгоритмические структуры при решении задач;
 записывать алгоритмы, не допуская двусмысленной записи;
 составлять алгоритм решения задач и переводить его на язык псевдокода;
 конструировать решение задачи из минимального числа инструкций;
 записывать вспомогательные алгоритмы в виде подпрограмм
По завершению:
Учащиеся должны знать:
 среду программы Geany;
 типы данных языка Python;
 встроенные стандартные функции;
Учащиеся должны уметь:
 переводить арифметическую запись выражений на язык программирования;
 использовать функции модулей math и cmath для решения задач;
 определять типы данных;
 записывать логические выражения;
 использовать в задачах такие конструкции как: цикл и ветвление.
 выполнять запись программы на языке Python, тестирование и отладку программы;
 решать задачи по теме: строки, списки и словари.
Требования к аппаратному и программному обеспечению:
Для успешного проведения практикума по программированию на Python на рабочих местах должны быть установлены:(версия не ниже 2.4)
модули Tkinter и NumPy
среды разработки на Python: IDLE, Eric или Geany, а также какие-либо эмуляторы терминалов _ xterm, rxvt и т.п.
В сборке от ALT Linux следует проверить наличие в системе следующих па-
кетов
• geany
• eric
• xterm
• python
• python-base
• python-doc
• python-module-numpy
• python-modules
• python-modules-encodings
• python-modules-tkinter
• python-tools-idle
Некоторые из перечисленных пакетов будут установлены по зависимостям при установке Python, Eric и Geany с помощью менеджера пакетов, остальные нужно установить вручную.
При создании программ удобно одновременно видеть текст программы и результаты её выполнения. Хорошо также, если при этом по-разному выделяются ключевые слова, названия функций и их аргументы, а также сразу же показываются строки, содержащие ошибки. Кроме того, бывает полезно выполнять программу по шагам и при этом следить за значениями каких-то переменных. Все эти возможности реализуются в так называемых интегрированных средах разработки (Integrated Development Environment, IDE).
Современные IDE, входящие в дистрибутивы Linux, могут работать с разными языками программирования. Существует IDE, лучше всего приспособленные для работы с одним конкретным языком, которые с другими языками работают, так сказать, факультативно. Кроме того, существуют IDE, которые одинаково успешно обеспечивают работу с самыми разными языками, как в режиме интерпретатора, так и в режиме компилятора.
В зависимости от версии ALT Linux удобно пользоваться либо Geany, либо Eric. Далее будут рассмотрены особенности работы в обоих IDE.

№	Тема урока	Тип урока	Объем	
1	Введение в язык программирования Python.	лекция	1	
2	Типы данных. Определение переменной. Ввод и вывод данных. Среда Geany и PyScripter для написания программ на языке Python.	Комбинированный	1	
3	Решение вычислительных задач.	Лабораторная работа	1	
4	Решение вычислительных задач на основе встроенных функций.	Лабораторная работа	1	
5	Решение задач на основе функций и констант, определенных в модулях math и cmath.	Самостоятельная работа	1	
6	Условный оператор полной и неполной формы. Логические выражения.	Комбинированный	2	
7	Множественное ветвление.	Комбинированный	1	
8	Решение задач на применение условного оператора.	Лабораторная работа	1	
9	Цикл While.	Комбинированный	1	
10	Цикл For.	Комбинированный	1	
11	Циклы.	Лабораторная работа	1	
12	Строки.	Комбинированный	1	
13	Списки.	Комбинированный	1	
14	Словари.	Комбинированный	1	
15	Контрольная работа.	Итоговый контроль	1	
	Итого:		16	

2. Тематическое планирование

Урок 1. Введение в язык программирования Python.
История языка программирования
Python - это достаточно молодой язык программирования. Он был создан примерно в 1991 году голландцем Гвидо Ван Россумом.
Свое название Пайтон (или Питон) получил от названия телесериала, а не пресмыкающегося. Однако по созвучию все равно в качестве эмблемы был удостоен змеи.
После того, как Гвидо разработал язык, он выложил его в Интернет, где уже целое сообщество программистов присоединилось к его улучшению.
Поскольку Python достаточно молодой язык программирования, то он активно совершенствуется и в настоящее время. Поэтому часто выходят новые версии. Официальный сайт: http://python.org.
Особенности
Python - это интерпретируемый язык программирования. Т.е. программный код на языке Питон преобразуется в машинный код построчно специальной программой - интерпретатором.имеет достаточно простой синтаксис. Читать код на этом языке программирования легко, т.к. в нем используется минимум вспомогательных элементов, а правила языка заставляют программистов делать отступы.
С другой стороны, Python - это полноценный, можно сказать универсальный, язык программирования. Это язык так называемого сверхвысокого уровня: он поддерживает объектно-ориентированное программирование (на самом деле он и разрабатывался как объектно-ориентированный язык).
Также Python распространяется свободно под лицензией подобной GNU General Public License.
Дзэн питона
Если интерпретатору Питона дать команду import this («импортировать это»), то выведется так называемый «Дзен Питона», иллюстрирующий идеологию и особенности данного языка.
1. Beautiful is better than ugly. Красивое лучше уродливого.
. Explicit is better than implicit. Явное лучше неявного.
. Simple is better than complex. Простое лучше сложного.
. Complex is better than complicated. Сложное лучше усложнённого.
. Flat is better than nested. Плоское лучше вложенного.
. Sparse is better than dense. Разрежённое лучше плотного.
. Readability counts. Удобочитаемость важна.
. Special cases aren't special enough to break the rules. Частные случаи не настолько существенны, чтобы нарушать правила.
9. Although practicality beats purity. Однако практичность важнее чистоты.
. Errors should never pass silently. Ошибки никогда не должны замалчиваться.
. Unless explicitly silenced. За исключением замалчивания, которое задано явно.
12. In the face of ambiguity, refuse the temptation to guess. В случае неоднозначности сопротивляйтесь искушению угадать.
13. There should be one - and preferably only one - obvious way to do it. Должен существовать один - и, желательно, только один - очевидный
способ сделать это.
14. Although that way may not be obvious at first unless you're Dutch. Хотя он может быть с первого взгляда не очевиден, если ты не голландец.
15. Now is better than never. Сейчас лучше, чем никогда.
. Although never is often better than *right* now. Однако, никогда чаще лучше, чем прямо сейчас.
17. If the implementation is hard to explain, it's a bad idea. Если реализацию сложно объяснить - это плохая идея.
18. If the implementation is easy to explain, it may be a good idea. Если реализацию легко объяснить - это может быть хорошая идея.
. Namespaces are one honking great idea - let's do more of those! Пространства имён - прекрасная идея, давайте делать их больше!
Интерактивный режим
Как уже было сказано интерпретатор выполняет команды построчно, т.е. пишешь строку -> интерпретатор выполняет ее -> наблюдаешь результат и тихо радуешься.
Это очень удобно, когда человек только изучает программирование или тестирует какую-нибудь небольшую часть кода. Ведь если работать на компилируемом языке, то пришлось бы сначала написать код на исходном языке программирования, затем скомпилировать и уж потом запустить получившийся файл (с машинным кодом) на исполнение. Если окажется, что где-то в исходном коде была допущена ошибка, то придется перекомпилировать всю программу. В интерпретируемых языках такой проблемы нет.
Работать в интерактивном режиме в ОС Linux можно в консоли. Для этого следует выполнить команду Python. Запустится интерпретатор, где сначала выведется информация о его версии и иная информация. Далее, приглашение к вводу (>>>).
Задание. Запустите интерпретатор Питона.
Поскольку никаких команд мы пока не знаем, то будем использовать Питон как калькулятор (возможности языка это позволяют).

Листинг 1. Использование Python в качестве калькулятора

Наберите подобные примеры в интерактивном режиме (в конце каждого нажимайте Enter).
Ответ выдается сразу после нажатия Enter (завершения ввода команды). Бывает, что в процессе ввода была допущена ошибка или требуется повторить ранее используемую команду. Чтобы не писать строку сначала, в консоли можно прокручивать список команд, используя для этого стрелки на клавиатуре.
Другой вариант работы в интерактивном режиме - это работа в среде разработки IDLE, у которой есть интерактивный режим работы. В отличие от консольного варианта здесь можно наблюдать подсветку синтаксиса (команды выделяются цветом). Прокручивать список команд можно с помощью комбинаций Alt+N, Alt+P.
Создание скриптов
Несмотря на удобства интерактивного режима работы с Питоном, часто требуется сохранить исходный программный код для последующего использования. В таком случае подготавливаются файлы, которые передаются затем интерпретатору на исполнение. По отношению к интерпретируемым языкам программирования часто исходный код называют скриптом. Файлы с кодом на Python обычно имеют расширение *.py.
Подготовить скрипты можно в той же среде IDLE. Для этого, после запуска среды в меню нужно выбрать команду File → New Window (Crtl + N), откроется новое окно. Затем желательно сразу сохранить файл (не забываем про расширение *.py). (Примечание: если набирать код, не сохранив файл в начале, то подсветка синтаксиса будет отсутствовать.) После того как код будет подготовлен, снова сохраните файл (чтобы обновить сохранение). Ну и наконец, можно запустить скрипт выполнив команду меню Run → Run Module (F5). После этого в первом окне (где «работает» интерпретатор) появится результат выполнения кода.
На самом деле скрипты можно писать в любом текстовом редакторе (желательно, чтобы он поддерживал подсветку синтаксиса языка Python). Также существуют специальные программы для разработки, предоставляющие дополнительные возможности и удобства.
Запускать подготовленные файлы можно не только в IDLE, но и в консоли с помощью команды python адрес/имя_файла.
Кроме того, существует возможность настроить выполнение скриптов с помощью двойного клика по файлу (в Windows данная возможность присутствует изначально).
	Урок 2. Типы данных. Определение переменной. Ввод и вывод данных. Среда Geany Geany и PyScripter для написания программ на языке Python.
Данные и их типы.
Можно заметить, что все, что мы делаем, мы делаем над чем-то - какими-то предметами или объектами. Мы изменяем объекты, их состояния и т.д. Можно провести аналогию с компьютером и сказать, что машина тоже манипулирует какими-то объектами (назовем их пока данными).
Понятно, что данные бывают разными. Очень часто компьютерной программе приходится работать с такими типами как число или строка (хотя это далеко не единственные типы данных). Например, на прошлом занятии мы «манипулировали» числами, выполняя над ними математические операции. Так, можно сказать, что при операции сложения мы выполняли изменение первого числа на величину второго, или при умножении - увеличивали одно число в количество раз, соответствующее второму.
Числа в свою очередь также бывают разными: целыми, дробными или могут иметь очень большое значение. В основном, при знакомстве с языком программирования Python нас буду интересовать три типа данных:
. целые числа (integer) - положительные и отрицательные целые числа, а также 0 (например, 4, 687, -45, 0);
. числа с плавающей точкой (float point) - дробные числа (например, 1.45, -3.789654, 0.00453). Примечание: разделителем целой и дробной части служит точка, а не запятая;
. строки (string) - набор символов, заключенных в кавычки (например, «ball», «What is your name?», 'dkfjUUv', '6589'). Примечание: кавычки могут быть одинарными или двойными.
Ввод и вывод данных
Компьютерные программы обрабатывают данные, производя над ними операции, которые задал программист, и которые были обусловлены поставленными задачами. Данные в программу можно «заложить» в процессе ее разработки. Однако такая программа всегда будет обрабатывать одни и те же данные и возвращать один и тот же результат. Чаще требуется совершенно другое - программа должна обрабатывать разные (относительно, в определенном диапазоне) данные, которые поступают в нее из внешних источников. В качестве последних могут выступать файлы или клавиатура. Когда информация вводится с клавиатуры, а результаты выводятся на экран монитора, то можно говорить об интерактивном режиме работы программы. Она обменивается информацией с внешней для нее средой: может выводить и получать данные в процессе выполнения, и не является замкнутой сама на себе. С выводом данных мы уже отчасти знакомы: выводом на экран (и не только) в языке программирования Python занимается функция print().
Ввод данных с клавиатуры в программу (начиная с версии Python 3.0) осуществляется с помощью функции input(). Когда данная функция выполняется, то поток выполнения программы останавливается в ожидании данных, которые пользователь должен ввести с помощью клавиатуры. После ввода данных и нажатия Enter, функция input() завершает свое выполнение и возвращает результат, который представляет собой строку символов, введенных пользователем.

Листинг 2. Ввод данных с клавиатуры

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

Листинг 3. Ввод данных с клавиатуры

Из примеров видно, что данные возвращаются в виде строки, даже если было введено число. В более ранних версиях Python были две встроенные функции, позволяющие получать данные с клавиатуры: raw_input(), возвращающая в программу строку и input(), возвращающая число. Начиная с версии Python 3.0, если требуется получить число, то результат выполнения функции input() изменяют с помощью функций int() или float().

Листинг 4. Применение функций int и float при вводе данных с клавиатуры

Результат, возвращаемый функцией input(), обычно присваивают переменной для дальнейшего использования в программе.

Листинг 5. Присвоение переменной для дальнейшего использования в программе

Операции.
Можно сказать, что операция - это выполнение каких-нибудь действия над данными (операндами). Для выполнения конкретных действий требуются специальные инструменты - операторы.

Рис. 1. Пример оператора «Сложение»

Например, запрограммировано, что символ «+» по отношению к числам выполняет операцию сложения, а по отношению к строкам - конкатенацию (соединение). Два знака «*» возводят первое число в степень второго.
программирование python лабораторный язык

Рис. 2. Пример сложения

Переменные
Все данные хранятся в ячейках памяти компьютера. Когда мы вводим число оно, помещается в память. Но мы же не знаем куда именно и просто теряем его. Вопрос: как обращаться к этим данными? Раньше, при написании программ на машинном языке, обращение к ячейкам памяти осуществляли с помощью указания регистров. Но уже с появлением ассемблеров, при обращении к данным стали использовать так называемые переменные. Механизм этой связи может различаться в разных языках программирования. На этом этапе достаточно запомнить, что данные связываются с каким-либо именем и в дальнейшем обращение к ним возможно по этому имени.

Рис. 3. Задание переменной

Связывание данных и имени (переменной) в языке программирования Python происходит с помощью знака «=» (операция присваивания). Например, запись sq =4 означает, что объект (данные) в определенной области памяти связаны с именем sq и обращаться к ним теперь следует по этому имени.
Имена переменных могут быть любыми. Однако есть несколько общих правил их написания:
. Желательно давать переменным имена, несущие в себе смысловое значение.
. Имя переменной не должно совпадать с командами языка (зарезервированными ключевыми словами).
. Имя переменной должно начинаться с буквы или символа подчеркивания (_). Чтобы узнать значение, на которое ссылается переменная, находясь в режиме интерпретатора, достаточно ее просто вызвать (написать имя и нажать Enter).
Среда Geany для написания программ на языке Python
Geany - свободная среда разработки программного обеспечения для UNIX-подобных операционных систем и Windows, а также для операционных систем, имеющих библиотеку GTK2. Geany использует библиотеку GTK2. Geany распространяется согласно GNU General Public License.не включает в свой состав компилятор. Вместо этого используется GNU Compiler Collection (или любой другой компилятор) для создания исполняемого кода.

Рис. 4. Интерфейс программы Geany

Особенности:
-	Подсветка исходного кода с учетом синтаксиса используемого языка программирования (язык определяется автоматически);
-	Автозавершение;
-	Автоматическая подстановка закрывающих тегов HTML/XML;
-	Простой менеджер проектов;
-	Поддержка плагинов.
PyScripter
PyScripter является редактором исходного кода, который был специально разработан для языка программирования Python. PyScripter также предоставляет возможность редактирования кода, написанного на C / C + +, HTML, CSS, JavaScript, PHP, XML и т.д., но его основной целью является предоставление разработчикам решений для написания и отладки кода Python. Программа имеет открытый исходный код и работает с 32-х и 64-х битными системами. Его графический пользовательский интерфейс можно настроить по-разному для того, чтобы обеспечить максимальную эффективность. Пользователи получают возможность расположить панели инструментов в главном окне, как они хотят. PyScripter 2.5.3 поставляется с большим количеством улучшений. Тем не менее, для того, чтобы иметь возможность работать с PyScripter, вам также необходимо установить Python в вашей системе. PyScripter является мощной средой для редактирования и отладки кода Python. Он будет высоко оценен Python программистами.

Рис. 5. Интерфейс программы PyScripter

Практическая работа
1.	Переменной var_int присвойте значение 10, var_float - значение 8.4, var_str - «No».
2.	Измените значение, хранимое в переменной var_int, увеличив его в 3.5 раза, результат свяжите с переменной big_int.
.	Измените значение, хранимое в переменной var_float, уменьшив его на единицу, результат свяжите с той же переменной.
.	Разделите var_int на var_float, а затем big_int на var_float. Результат данных выражений не привязывайте ни к каким переменным.
.	Измените значение переменной var_str на «NoNoYesYesYes». При формировании нового значения используйте операции конкатенации (+) и повторения строки (*).
.	Выведите значения всех переменных.
	Урок 3. Решение вычислительных задач.
	Задание №1. Определите объем цилиндра.

	Листинг 6. Нахождение объема цилиндра
	
Задание №2. Извлеките кубический корень числа вводимого с клавиатуры.

Листинг 7. Извлечение кубического корня из суммы двух чисел

	Урок 4. Решение вычислительных задач на основе встроенных функций.
Функции
Функции в программировании можно представить как изолированный блок кода, обращение к которому в течение выполнения программы может быть многократным. Зачем нужны такие блоки инструкций? В первую очередь, чтобы сократить объем исходного кода: рациональней вынести часто повторяющиеся выражения в отдельный блок и, затем, по мере надобности, обращаться к нему.
Представим себе следующую ситуацию. Требуется написать скрипт, который при исполнении должен три раза запрашивать у пользователя разные данные, но выполнять с ними одни и те же действия.

Листинг 8. Повторное обращение к блокам функций

Данная программа находит модуль разницы двух чисел. Очевидно, что такая запись исходного кода не рациональна: три почти одинаковых блока. На самом деле можно было бы использовать цикл while для организации повторения.

Листинг 9. Применение функции while при нахождении модуля двух чисел

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

Листинг 10. Применения функции Def при нахождении модуля двух чисел

Разберем представленный программный код. Def - это инструкция (команда) языка программирования Python, позволяющая создавать функцию. schet - это имя функции, которое (так же как и имена переменных) может быть почти любым, но желательно смысловым. Далее идет двоеточие, обозначающее окончание заголовка функции (аналогично с условиями и циклами). После заголовка, с новой строки и с отступом, следуют выражения тела функции. В конце тела функции присутствует инструкция return (которой может и не быть), она передает то или иное значение в основную ветку программы. Если бы в функции не было инструкции return, то в основную программу ничего бы не возвращалось и переменным c и d (или e и f, а также z и x) ничего не присваивалось.
После функции идет, так называемая, основная ветка программы, в которой переменным попарно присваивается результат выполнения вызываемой функции. На самом деле вызов функции может ничему и не присваиваться.
Выражения тела функции выполняются лишь тогда, когда она вызывается в основной ветке программы. Так, например, если функция присутствует в исходном коде, но нигде не вызывается в нем, то содержащиеся в ней инструкции не будут выполнены ни разу.
	Урок 5. Решение задач на основе функций и констант, определенных в модулях math и cmath.
Модуль Math
Модуль math всегда доступен и обеспечивает доступ к математическим функциям. Данные функции неприменимы к комплексным числам, для работы с комплексными числами имеются функции с теми же именами в модуле cmath. Модуль содержит следующие функции. Во всех случаях, кроме особо оговоренных, функции возвращают число типа float..acos(x) # арккосинус.asin(x) # арксинус.atan(x) # арктангенс х.atan2 (x, y) # арктангенс y/x.ceil(x) # округление вверх.cos(x) # косинус.cosh(x) # гиперболический косинус.e # константа е.exp(x) # экспонента (е в степени х).fabs(x) # модуль х.floor(x) # округление вниз.fmod (x, y) # остаток от деления x/y.frexp(x) # мантисса и порядок х; результат в виде (m, i), где x = m * 2**i;
# i - целое, m - число с плавающей точкой в пределах 0.5 <= |m| < 1.0.hypot (x, y) # гипотенуза; sqrt (x*x + y*y).ldexp (m, i) # m * (2**i) - функция, обратная frexp.log(x) # натуральный логарифм.log10 (x) # десятичный логарифм.modf(x) # возвращает (y, q), где y - дробная часть x, a q - целая часть х;
# обе части имеют знак самого х.pi # константа пи.pow (x, y) # возведение х в степень у.sin(x) # синус.sinh(x) # гиперболический синус.sqrt(x) # квадратный корень.tan(x) # тангенс.tanh(x) # гиперболический тангенс
Решим задачу по применению данного модуля: Определим остаток от деления двух чисел.

Листинг 11. Нахождение остатка от деления двух чисел

Модуль Cmath
Этот модуль всегда доступен и позволяет проводить операции над комплексными числами. При этом функции модуля поддерживают работу не только с комплексными, но и с целыми числами и числами с плавающей запятой. Причина, по которой имеются два таких схожих модуля, в том, что многим пользователям не нужны комплексные числа или они просто не знают что это такое. В этих случаях будет даже лучше, если при math.sqrt(-1) будет возбуждено исключение, чем будет найдено комплексное решение. При этом отметим, что функции в модуле всегда возвращают комплексное число, даже если исходные числа не содержат мнимой части.
сmath.acos(x) # арккосинус
сmath.asin(x) # арксинус
сmath.atan(x) # арктангенс х
сmath.cos(x) # косинус
сmath.cosh(x) # гиперболический косинус
сmath.exp(x) # экспонента (е в степени х)
сmath.log(x) # натуральный логарифм
сmath.log10 (x) # десятичный логарифм
сmath.sin(x) # синус
сmath.sinh(x) # гиперболический синус
сmath.sqrt(x) # квадратный корень
сmath.tan(x) # тангенс
сmath.tanh(x) # гиперболический тангенс
	Урок 6. Условный оператор полной и неполной формы. Логические выражения.
Ход выполнения программы может быть линейным, т.е. таким, когда выражения выполняются, начиная с первого и заканчивая последним, по порядку, не пропуская ни одной строки кода. Но чаще бывает совсем не так. При выполнении программного кода некоторые его участки могут быть пропущены. Чтобы лучше понять почему, проведем аналогию с реальной жизнью. Допустим, человек живет по расписанию (можно сказать, расписание - это своеобразный «программный код», который следует выполнить). В его расписании в 18.00 стоит поход в бассейн. Однако человеку поступает информация, что воду слили, и бассейн не работает. Вполне логично отменить свое занятие по плаванию. Т.е. одним из условий посещения бассейна должно быть его функционирование, иначе должны выполняться другие действия.
Похожая нелинейность действий может быть предусмотрена и в компьютерной программе. Например, часть кода должна выполняться лишь при определенном значении конкретной переменной. Обычно в языках программирования используется приблизительно такая конструкция:

Рис. 6. Логическая конструкция оператора if

Пример ее реализации на языке программирования Python:

Листинг 12. Применение логического оператора if

Первая строка конструкции if - это заголовок, в котором проверяется условие выполнения строк кода после двоеточия (тела конструкции). В примере выше тело содержит всего лишь одно выражение, однако чаще их бывает куда больше.
Про Python говорят, что это язык программирования с достаточно ясным и легко читаемым кодом. Это связано с тем, что в нем сведены к минимуму вспомогательные элементы (скобки, точка с запятой), а для разделения синтаксических конструкций используются отступы от начала строки. Учитывая это, в конструкции if код, который выполняется при соблюдении условия, должен обязательно иметь отступ вправо. Остальной код (основная программа) должен иметь тот же отступ, что и слово if. Обычно отступ делается с помощью клавиши Tab.

Рис. 7. Отступ при использование логического оператора

Можно изобразить блок-схему программы, содержащей инструкцию if в таком виде:

Рис. 8. Блок-схема конструкции оператора if

Встречается и более сложная форма ветвления: if-else. Если условие при инструкции if оказывается ложным, то выполняется блок кода при инструкции else.

Рис. 9. Блок-схема конструкции ветвления if-else

Пример кода с веткой else на языке программирования Python:

Листинг 13. Пример кода с веткой на else

Практическая работа
1.	Напишите программный код, в котором в случае, если значение некой переменной больше 0, выводилось бы специальное сообщение (используйте функцию print). Один раз выполните программу при значении переменной больше 0, второй раз - меньше 0.
2.	Усовершенствуйте предыдущий код с помощью ветки else так, чтобы в зависимости от значения переменной, выводилась либо 1, либо -1.
.	Самостоятельно придумайте программу, в которой бы использовалась инструкция if (желательно с веткой else). Вложенный код должен содержать не менее трех выражений.
	Урок 7. Множественное ветвление.
Логика выполняющейся программы может быть сложнее, чем выбор одной из двух ветвей. Например, в зависимости от значения той или иной переменной, может выполняться одна из трех (или более) ветвей программы.
Как организовать такое множественное ветвление? Наверное, можно использовать несколько инструкций if: сначала проверяется условие в первой инструкции if (если оно положительно, то будет выполняться вложенный в нее блок кода), затем - во второй инструкции if и т.д.
Однако при таком подходе проверка последующих инструкций будет продолжаться даже тогда, когда, допустим, первое условие было удовлетворено и блок кода при данной ветке выполнен. Проверка последующих условий часто бывает бессмысленной.
Чтобы решить проблему множественного ветвления, в структурных языках программирования предусмотрена специальное расширение инструкции if, позволяющее направить поток выполнения программы лишь по одной ветви, минуя остальные. Данная расширенная инструкция, помимо необязательной части else, включает части elif (сокращение от «else if» - «еще если») и выглядит примерно так, как показано на блок-схеме. Частей elif может быть сколь угодно много (в пределах разумного).

Рис. 10. Множественное ветвление с применением функции elif

В отличии от использования множества инструкций if, инструкция if-elif-else прекращает проверку условий, как только найдет первое совпадение. Например, если условие при if (первая ветка) будет удовлетворено, то после выполнения вложенного блока выражений, программа вернется в основную ветку.
Примеры скриптов с использованием инструкции if-elif-else на языке программирования Python:

Листинг 14. Примеры скриптов с использованием инструкции if-elif-else

Практическая работа
1. Напишите программу по следующему описанию:. двум переменным присваиваются числовые значения;. если значение первой переменной больше второй, то найти разницу значений переменных (вычесть из первой вторую), результат связать с третьей переменной;. если первая переменная имеет меньшее значение, чем вторая, то третью переменную связать с результатом суммы значений двух первых переменных;. во всех остальных случаях, присвоить третьей переменной значение первой переменной;. вывести значение третьей переменной на экран.
. Придумайте программу, в которой бы использовалась инструкция if-elif-else. Количество ветвей должно быть как минимум четыре.
	Урок 8. Решение задач на применение условного оператора.
Задание №1. Дано натуральное число. Определить, будет это число: кратным 4.

Листинг 15. Определение кратности натурального числа

Задание №2. Найти среднее арифметическое числа.

Листинг 16. Поиск среднего арифметического числа
	
	Урок 9. Цикл While.
Циклы - это инструкции, выполняющие одну и туже последовательность действий, пока действует заданное условие.
В реальной жизни мы довольно часто сталкиваемся с циклами. Например, ходьба человека - вполне циклическое явление: шаг левой, шаг правой, снова левой-правой и т.д., пока не будет достигнута определенная цель (например, школа или магазин). В компьютерных программах наряду с инструкциями ветвлениями (т.е. выбором пути действия) также существуют инструкции циклов (повторения действия). Если бы инструкций цикла не существовало, пришлось бы много раз вставлять в программу один и тот же код подряд столько раз, сколько нужно выполнить одинаковую последовательность действий.
Универсальным организатором цикла в языке программирования Python (как и во многих других языках) является конструкция while. Слово «while» с английского языка переводится как «пока» («пока логическое выражение возвращает истину, выполнять определенные операции»). Конструкцию while на языке Python можно описать следующей схемой:

Рис. 11. Конструкция While

Эта схема приблизительна, т.к. логическое выражение в заголовке цикла while может быть более сложным, а изменяться может переменная (или выражение) b.
Может возникнуть вопрос: «Зачем изменять a или b?». Когда выполнение программного кода доходит до цикла while, выполняется логическое выражение в заголовке, и, если было получено True (истина), выполняются вложенные выражения. После поток выполнения программы снова возвращается в заголовок цикла while, и снова проверяется условие. Если условие никогда не будет ложным, то не будет причин остановки цикла и программа зациклится. Чтобы этого не произошло, необходимо предусмотреть возможность выхода из цикла - ложность выражения в заголовке. Таким образом, изменяя значение переменной в теле цикла, можно довести логическое выражение до ложности.

Рис. 12. Блок-схема конструкции цикла while

Эту изменяемую переменную, которая используется в заголовке цикла while, обычно называют счетчиком. Как и всякой переменной ей можно давать произвольные имена, однако очень часто используют буквы i и j. Простейший цикл на языке программирования Python может выглядеть так:
str1 = «+»= 0 i < 10:
print (str1)
i = i + 1
Листинг 17. Пример простейшего цикла.
В последней строчке кода происходит увеличение значения переменной i на единицу, поэтому с каждым оборотом цикла ее значение увеличивается. Когда будет достигнуто число 10, логическое выражение i < 10 даст ложный результат, выполнение тела цикла будет прекращено, а поток выполнения программы перейдет на команды следующие за всей конструкцией цикла. Результатом выполнения скрипта приведенного выше является вывод на экран десяти знаков + в столбик. Если увеличивать счетчик в теле цикла не на единицу, а на 2, то будет выведено только пять знаков, т.к. цикл сделает лишь пять оборотов.
Более сложный пример с использованием цикла:
fib1 = 0= 1 (fib1) (fib2)= 10= 0 i < n:_sum = fib1 + fib2
print (fib_sum)= fib2= fib_sum
i = i + 1
Листинг 18. Пример цикла.
Этот пример выводит числа Фибоначчи - ряд чисел, в котором каждое последующее число равно сумме двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13 и т.д. Скрипт выводит двенадцать членов ряда: два (0 и 1) выводятся вне цикла и десять выводятся в результате выполнения цикла.
Как это происходит? Вводятся две переменные (fib1 и fib2), которым присваиваются начальные значения. Присваиваются значения переменной n и счетчику i, между которыми те или иные математические отношения формируют желаемое число витков цикла. Внутри цикла создается переменная fib_sum, которой присваивается сумма двух предыдущих членов ряда, и ее же значение выводится на экран. Далее изменяются значения fib1 и fib2 (первому присваивается второе, а второму - сумма), а также увеличивается значение счетчика.
Практическая работа
1.	Напишите скрипт на языке программирования Python, выводящий ряд чисел Фибоначчи (см. пример выше). Запустите его на выполнение. Затем измените код так, чтобы выводился ряд чисел Фибоначчи, начиная с пятого члена ряда и заканчивая двадцатым.
2.	Напишите цикл, выводящий ряд четных чисел от 0 до 20. Затем, каждое третье число в ряде от -1 до -21.
.	Самостоятельно придумайте программу на Python, в которой бы использовался цикл while.
	Урок 10. Цикл For.
В девятом уроке был рассмотрен цикл while. Однако это не единственный способ организации в языке Python повторения группы выражений. В программах, написанных на Питоне, широко применяется цикл for, который представляет собой цикл обхода заданного множества элементов (символов строки, объектов списка или словаря) и выполнения в своем теле различных операций над ними. Например, если имеется список чисел, и необходимо увеличить значение каждого элемента на две единицы, то можно перебрать список с помощью цикла for, выполнив над каждым его элементом соответствующее действие.

>>> spisok = [0,10,20,30,40,50,60,70,80,90]
>>> i = 0
>>> for element in spisok:[i] = element + 2= i + 1
>>> spisok
[2, 12, 22, 32, 42, 52, 62, 72, 82, 92]
Листинг 19. Применение цикла for

В примере переменная i нужна для того, чтобы записать изменившееся значение элемента в список. В ней хранится значение индекса очередного элемента списка. В то время, как переменная element связывается со значением очередного элемента данных. В заголовке цикла for происходит обращение очередному элементу списка. В теле цикла элементу с индексом i присваивается сумма значения текущего (обрабатываемого) элемента и двойки. Далее индекс увеличивается на единицу, а поток выполнения программы переходит снова в заголовок цикла for, где происходит обращение к следующему элементу списка. Когда все элементы обработаны цикл for заканчивает свою работу. Отсутствие очередного элемента является условием завершения работы цикла for (для сравнения: в цикле while условием завершения служит результат false логического выражения в заголовке). Еще один момент: если счетчик не увеличивать на единицу (выражение i = i + 1), то не смотря на то, что все элементы списка будут обработаны, результат все время будет присваиваться первому элементу списка (с индексом 0).
С таким же успехом перебирать можно и строки, если не пытаться их при этом изменять:

>>> stroka = «привет»
>>> for bukva in stroka:
print (bukva, end=' * ')
п * р * и * в * е * т *
>>>
Листинг 20. Перебор строк с помощью цикла for

Цикл for широко используется в языке программирования Python, т.к. является важным инструментом при обработки структур данных. Также следует запомнить, что цикл for в Питоне особенный. Он не является аналогом циклов for во многих других языках программирования, где представляет собой, так называемый, цикл со счетчиком.
Практическая работа
1.	Создайте список, состоящий из четырех строк. Затем, с помощью цикла for, выведите строки поочередно на экран.
2.	Измените предыдущую программу так, чтобы в конце каждой буквы строки добавлялось тире. (Подсказка: цикл for может быть вложен в другой цикл.)
.	Создайте список, содержащий элементы целочисленного типа, затем с помощью цикла перебора измените тип данных элементов на числа с плавающей точкой. (Подсказка: используйте встроенную функцию float().)
	Урок 11. Лабораторная работа по теме: Циклы.
Задание №1. Вычислите сумму всех элементов списка с помощью цикла for.

Рис. 13. Сумма всех элементов списка

Задание №2. Вычислите произведение всех элементов списка с помощью цикла for.

Рис. 14. Произведение всех элементов списка

Задание №3. С помощью цикла while напишите программу: Программа выполняет циклическую операцию, где a и b переменные над которыми происходят вычисления.
1.	Первым действием распечатывается текст «цикл…» и значение a.
2.	Вторым к a прибавляется один. Затем цикл повторяется до тех пор, пока а не будет равно 10.

Рис. 15. Программа на цикл while

	Урок 12. Строки.
Строки уже упоминались в уроке о типах данных; рассмотрим их более подробно.
Строка - это сложный тип данных, представляющий собой последовательность символов.
Строки в языке программирования Python могут заключаться как в одиночные, так и двойные кавычки. Однако, начало и конец строки должны обрамляться одинаковым типом кавычек.
Существует специальная функция len(), позволяющая измерить длину строки. Результатом выполнения данной функции является число, показывающее количество символов в строке.
Также для строк существуют операции конкатенации (+) и дублирования (*).

>>> len ('It is a long string')

>>> '!!!' + ' Hello World ' + '!!!'
'!!! Hello World!!!'
>>> '-' * 20
'-'
Листинг 21. Операции конкатенации и дублирования

В последовательностях важен порядок символов, у каждого символа в строке есть уникальный порядковый номер - индекс. Можно обращаться к конкретному символу в строке и извлекать его с помощью оператора индексирования, который представляет собой квадратные скобки с номером символа в них.

>>> 'morning, afternoon, night'[1]
'o'
>>> tday = 'morning, afternoon, night'
>>> tday[4]
'i'
>>>
Листинг 22. Применение оператора индексирования

В примере, выражение 'morning, afternoon, night'[1] привело к извлечению второго символа. Дело в том, что индексация начинается не с единицы, а с нуля. Поэтому, когда требуется извлечь первый символ, то оператор индексирования должен выглядеть так: [0]. Также позволительно извлекать символы, начиная отсчет с конца. В этом случае отсчет начинается с -1 (последний символ).

>>> tday_ru = 'утро, день, ночь'
>>> tday_ru[0]
'у'
>>> tday_ru[-1]
'ь'
>>> tday_ru[-3]
'о'
Листинг 23. Применение оператора индексирования

Очевидно, что удобнее работать не с самими строками, а с переменными, которые на них ссылаются. Результат выполнения выражения индексирования можно присвоить другой переменной.

>>> a = «very big string»
>>> a[6]
'i'
>>> b = a[0]
>>> b
'v'
Листинг 24. Присвоение выражения индексирования

Можно извлекать из строки не один символ, а несколько, т.е. получать срез (подстроку). Оператор извлечения среза из строки выглядит так: [X:Y]. X - это индекс начала среза, а Y - его окончания; причем символ с номером Y в срез уже не входит. Если отсутствует первый индекс, то срез берется от начала до второго индекса; при отсутствии второго индекса, срез берется от первого индекса до конца строки.

>>> tday = 'morning, afternoon, night'
>>> tday [0:7]
'morning'
>>> tday [9: - 7]
'afternoon'
>>> tday [-5:]
'night'
Листинг 25. Оператор извлечения среза подстроки

Кроме того, можно извлекать символы не подряд, а через определенное количество символов. В таком случае оператор индексирования выглядит так: [X:Y:Z]; Z - это шаг, через который осуществляется выбор элементов.
>>> str4 = «Full Ball Fill Pack Ring»

>>> str4 [:5]
'FBFPR'
>>> str4 [0:15:2]
'Fl alFl '
Листинг 26. Оператор извлечения среза подстроки

Практическая работа
1.	Свяжите переменную с любой строкой, состоящей не менее чем из 8 символов. Извлеките из строки первый символ, затем последний, третий с начала и третий с конца. Измерьте длину вашей строки.
2.	Присвойте произвольную строку длиной 10-15 символов переменной и извлеките из нее следующие срезы:
- первые восемь символов;
- четыре символа из центра строки;
- символы с индексами кратными трем.
	Урок 13. Списки
Списки в языке программирования Python, как и строки, являются упорядоченными последовательностями. Однако, в отличии от строк, списки состоят не из символов, а из различных объектов (значений, данных), и заключаются не в кавычки, а в квадратные скобки []. Объекты отделяются друг от друга с помощью запятой.
Списки могут состоять из различных объектов: чисел, строк и даже других списков. В последнем случае, списки называют вложенными.

[23, 656, -20, 67, -45] #список целых чисел
[4.15, 5.93, 6.45, 9.3, 10.0, 11.6] #список из дробных чисел
[«Katy», «Sergei», «Oleg», «Dasha»] #список из строк
[«Москва», «Титова», 12, 148] #смешанный список
[[0, 0, 0], [0, 0, 1], [0, 1, 0]] #список, состоящий из списков
Листинг 27. Примеры списков

Как и над строками над списками можно выполнять операции соединения и повторения:

>>> [45, -12, 'april'] + [21, 48.5, 33]
[45, -12, 'april', 21, 48.5, 33]
>>> [[0,0], [0,1], [1,1]] * 2
[[0, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 1]]
Листинг 28. Операции соединения и повторения над списками

По аналогии с символами строк, можно получать доступ к объектам списка по их индексам, извлекать срезы, измерять длину списка:

>>> li = ['a', 'b', 'c', 'd', 'e', 'f']
>>> len(li)

>>> li[0]
'a'
>>> li[4]
'e'
>>> li [0:3]
['a', 'b', 'c']
>>> li [3:]
['d', 'e', 'f']
Листинг 29. Доступ к объектам списка по его индексам

В отличии от строк, списки - это изменяемые последовательности. Если представить строку как объект в памяти, то когда над ней выполняются операции конкатенации и повторения, то это строка не меняется, а в результате операции создается другая строка в другом месте памяти. В строку нельзя добавить новый символ или удалить существующий, не создав при этом новой строки. Со списком дело обстоит иначе. При выполнении операций другие списки могут не создаваться, а изменяться непосредственно оригинал. Из списков можно удалять элементы, добавлять новые. При этом следует помнить, многое зависит от того, как вы распоряжаетесь переменными. Бывают ситуации, когда списки все-таки копируются. Например, результат операции присваивается другой переменной.
Символ в строке изменить нельзя, элемент списка - можно:

>>> mystr = 'abrakadabra'
>>> mylist = ['ab', 'ra', 'ka', 'da', 'bra']
>>> mystr[3] = '0'(most recent call last):«<pyshell#11>», line 1, in <module>[3] = '0': 'str' object does not support item assignment
>>> mylist[1] = 'ro'
>>> mylist
['ab', 'ro', 'ka', 'da', 'bra']
>>>
Листинг 30. Изменение элемента списка

В списке можно заменить целый срез:

>>> mylist [0:2] = [10,20]
>>> mylist
[10, 20, 'ka', 'da', 'bra']
Листинг 31. Замена среза в списке

Более сложная ситуация:

>>> alist = mylist [0:2] + [100,'it is ', 200] + mylist [2:] # новый список
>>> a2list = mylist # создается вторая ссылка-переменная на первый список
>>> alist
[10, 20, 100, 'it is ', 200, 'ka', 'da', 'bra']
>>> a2list
[10, 20, 'ka', 'da', 'bra']
>>> a2list[0] = '!!!' # изменяем список
>>> a2list
['!!!', 20, 'ka', 'da', 'bra']
>>> mylist # обе переменные связаны с одним списком
['!!!', 20, 'ka', 'da', 'bra']
Листинг 32. Замена элемента списка

Практическая работа
1.	Создайте два любых списка и свяжите их с переменными.
2.	Извлеките из первого списка второй элемент.
.	Измените во втором списке последний объект. Выведите список на экран.
.	Соедините оба списка в один, присвоив результат новой переменной. Выведите получившийся список на экран.
.	«Снимите» срез из соединенного списка так, чтобы туда попали некоторые части обоих первых списков. Срез свяжите с очередной новой переменной. Выведите значение этой переменной.
.	Добавьте в список-срез два новых элемента и снова выведите его.
	Урок 14. Словари.
Одним из сложных типов данных (наряду со строками и списками) в языке программирования Python являются словари. Словарь - это изменяемый (как список) неупорядоченный (в отличие от строк и списков) набор пар «ключ: значение».
Чтобы представление о словаре стало более понятным, можно провести аналогию с обычным словарем, например, англо-русским. На каждое английское слово в таком словаре есть русское слово-перевод: cat - кошка, dog - собака, table - стол и т.д. Если англо-русский словарь описывать с помощью Python, то английские слова будут ключами, а русские - их значениями:

{'cat':'кошка', 'dog':'собака', 'bird':'птица', 'mouse':'мышь'}
Листинг 33. Ключ и его значение

Обратите внимание на фигурные скобки, именно с их помощью определяется словарь. Синтаксис словаря на Питоне можно описать такой схемой:

Рис. 13. Синтаксис словаря

Если создать словарь в интерпретаторе Python, то после нажатия Enter можно наблюдать, что последовательность вывода пар «ключ: значение» не совпадает с тем, как было введено:

>>> {'cat':'кошка', 'dog':'собака', 'bird':'птица', 'mouse':'мышь'}
{'bird': 'птица', 'mouse': 'мышь', 'dog': 'собака', 'cat': 'кошка'}
Листинг 34. Вывод ключа и его значения

Дело в том, что в словаре абсолютно не важен порядок пар, и интерпретатор выводит их в случайном порядке. Тогда как же получить доступ к определенному элементу, если индексация не возможна в принципе? Ответ: в словаре доступ к значениям осуществляется по ключам, которые заключаются в квадратные скобки (по аналогии с индексами строк и списков).

>>> dic = {'cat':'кошка', 'dog':'собака', 'bird':'птица', 'mouse':'мышь'}
>>> dic['cat']
'кошка'
>>> dic['bird']
'птица'
Листинг 35. Доступ к элементу словаря

Словари, как и списки, являются изменяемым типом данных: можно изменять, добавлять и удалять элементы (пары «ключ: значение»). Изначально словарь можно создать пустым (например, d = {}) и лишь потом заполнить его элементами. Добавление и изменение имеет одинаковый синтаксис: словарь[ключ] = значение. Ключ может быть как уже существующим (тогда происходит изменение значения), так и новым (происходит добавление элемента словаря). Удаление элемента словаря осуществляется с помощью функции del().

>>> dic= {'cat':'кошка', 'dog':'собака', 'bird':'птица', 'mouse':'мышь'}
>>> dic['elephant'] = 'бегемот'
>>> dic['fox'] = 'лиса'
>>> dic
{'fox': 'лиса', 'dog': 'собака', 'cat': 'кошка', 'elephant': 'бегемот', 'mouse': 'мышь', 'bird': 'птица'}
>>> dic['elephant'] = 'слон'
>>> del (dic['bird'])
>>> dic
{'fox': 'лиса', 'dog': 'собака', 'cat': 'кошка', 'elephant': 'слон', 'mouse': 'мышь'}
Листинг 36. Удаление элемента словаря с помощью функции del

Тип данных ключей и значений словарей не обязательно должны быть строками. Значения словарей могут быть более сложными (содержать структуры данных, например, другие словари или списки).

>>> d = {1:'one', 2:'two', 3:'three'}
>>> d
{1: 'one', 2: 'two', 3: 'three'}
>>> d = {10: [3,2,8], 100: [1,10,5], 1000: [23,1,5]}
>>> d
{1000: [23, 1, 5], 10: [3, 2, 8], 100: [1, 10, 5]}
>>> d = {1.1:2, 1.2:0, 1.3:8}
>>> d
{1.3: 8, 1.2: 0, 1.1: 2}
>>> d = {1.1:2, 10:'apple', 'box':100}
>>> d
{'box': 100, 10: 'apple', 1.1: 2}
Листинг 37. Типы данных ключей и значений словаря

Словари - это широко используемый тип данных языка Python. Для работы с ними существует ряд встроенных функций.
Практическая работа
1.	Создайте словарь, связав его с переменной school, и наполните его данными, которые бы отражали количество учащихся в десяти разных классах (например, 1а, 1б, 2б, 6а, 7в и т.д.).
2.	Узнайте сколько человек в каком-нибудь классе.
.	Представьте, что в школе произошли изменения, внесите их в словарь:
- в трех классах изменилось количество учащихся;
- в школе появилось два новых класса;
- в школе расформировали один из классов.
. Выведите содержимое словаря на экран.
	Урок 15. Контрольная работа.
Задание 1
Напишите код по следующему словесному алгоритму:
1.	Попросить пользователя ввести число от 1 до 9. Полученные данные связать с переменной x.
2.	Если пользователь ввел число от 1 до 3 включительно, то
·	попросить пользователя ввести строку. Полученные данные связать с переменной s;
·	попросить пользователя ввести число повторов строки. Полученные данные связать с переменной n, предварительно преобразовав их в целочисленный тип;
·	выполнить цикл повторения строки n раз;
·	вывести результат работы цикла.
3.	Если пользователь ввел число от 4 до 6 включительно, то…
·	попросить пользователя ввести степень, в которую следует возвести число. Полученные данные связать с переменной m;
·	реализовать возведение числа x в степень m;
·	вывести полученный результат.
4.	Если пользователь ввел число от 7 до 9, то выполнить увеличения числа x на единицу в цикле 10 раз, при этом на экран вывести все 10 чисел.
5.	Во всех остальных случаях выводить надпись «Ошибка ввода».
Задание 2
Напишите программу, которая бы выполняла следующие задачи:
1.	выводила название программы «Общество в начале XXI века»;
2.	запрашивала у пользователя его возраст;
.	если пользователь вводит числа от 0 до 7, то программа выводила надпись «Вам в детский сад»;
.	от 7 до 18 - «Вам в школу»;
.	от 18 до 25 - «Вам в профессиональное учебное заведение»;
.	от 25 до 60 - «Вам на работу»;
.	от 60 до 120 - «Вам предоставляется выбор»;
.	меньше 0 и больше 120 - пятикратный вывод надписи «Ошибка! Это программа для людей!»
В программе желательно использовать все «атрибуты» структурного программирования: функцию, ветвление и цикл.

. Контрольные вопросы по Python
программирование python лабораторный язык
1.	Какая встроенная функция вводит данные с клавиатуры?
a)	input;
b)	print;
c)	def;
d)	abs.
2.	Какая встроенная функция выводит данные на экран?
a)	input;
b)	print;)	def;
d)	abs.
3.	Как применить функцию cos к действительному числу?
a)	math.cos(число);
b)	cos(число);
c)	cmath.cos(число).
4.	Имеется строки x=» 1» и у=» 5». Как сложить эти числа и получить число 6.
a)	int (x+y);
b)	x+y;)	int(x)+int(y);)	x+-y.
5.	Какие ключевые слова могут входить в состав оператора цикла for.
a)	Step;
b)	In;
c)	Else;
d)	Elif;
e)	Elfor.
6.	Какую из следующих операций можно применить к строке:
a)	+;
b)	*;)	Обе;)	Ни одну из них.
7.	Что напечатает следующий код:
а=[1, 2, 3]a[1]a[1]
a)	1;
b)	2;)	3;
d)	Код вызовет ошибку.
8. Что произойдет при выполнении следующего кода:
x, y=y, x
9. Данное выражение эквивалентно
x
y=y
x
a)	Поменяются местами значения х и у;
b)	В этой строке синтаксическая ошибка
10.	Что выведет следующий код:
(a, b)=(4,6)
c=eval («a*b»)(c)
a)	«a*b»;
b)	24;)	444444;
d)	Возникнет ошибка.
11.	Какого типа значение получится в результате вычисления следующего выражения:
[«»]
a)	Это синтаксическая ошибка;
b)	Str(строка);
c)	List(список);
d)	Array(массив).
	
Заключение
	
	Разработанный нами факультативный курс посвящен одному из бурно развивающихся и популярных в настоящее время сценарных языков программирования - Python. Язык Python позволяет быстро создавать как прототипы программных систем, так и сами программные системы, помогает в интеграции программного обеспечения для решения производственных задач. Python имеет богатую стандартную библиотеку и большое количество модулей расширения практически для всех нужд отрасли информационных технологий. Благодаря ясному синтаксису изучение языка не составляет большой проблемы.
	Написанные на нем программы получаются структурированными по форме, и в них легко проследить логику работы. На примере языка Python рассматриваются такие важные понятия как: объектно-ориентированное программирование, функциональное программирование, событийно-управляемые программы (GUI-приложения), форматы представления данных (Unicode, XML и т.п.). Возможность диалогового режима работы интерпретатора Python позволяет существенно сократить время изучения самого языка и перейти к решению задач в соответствующих предметных областях. Python свободно доступен для многих платформ, а написанные на нем программы обычно переносимы между платформами без изменений. Это обстоятельство позволяет применять для изучения языка любую имеющуюся аппаратную платформу. С этим и связана актуальность изучения этого языка программирования в рамках факультативного курса.
	В дипломной работе была рассмотрена методика изучения программирования на языке Python в старших классах и разработаны практические задания для закрепления изученного материала.
	Задачи решены, цель дипломной работы достигнута.

Список литературы

1.	Inkscape: Guide to a Vector Drawing Program. [Электр. ресурс] // http://tavmjong.free.fr/INKSCAPE/MANUAL/
2.	Хахаев И.А. Практикум по алгоритмизации и программированию на Python: / И.А. Хахаев - М.: Альт Линукс, 2010. - 126 с.
3.	Информатика: Учебник для 10-11 класса / Н.Д. Угринович - М.: Бином, 2009. - 512 с.
4.	Фридланд А.Я., Ханамирова Л.С., Фридланд И.А. Информатика и компьютерные технологии. Основные термины. Толковый словарь. М..Издательство Астрель., 2003.
.	Бизли Д.М., Г. Ван Россум. Язык программирования Python. Справочник. (пер. с англ.) Киев: ДиаСофт., 2000.
.	Лутц М. Программирование на Python. (пер. с англ.) СПб.:.Символ-Плюс., 2002.
.	8. Сузи Р.А. Python. Наиболее полное руководство. СПб.: БХВ-Петнбург., 2002.
.	Сузи Р.А. Язык программирования Python. М: Бином. Лаборатория знаний. - 2006.
.	Саммерфилд М. Программирование на Python 3. Подробное руководство (пер. с англ.) СПб: Символ-Плюс., 2009.