Файл: Учебное пособие С. К. Буйначев н. Ю. Боклаг.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 738

Скачиваний: 16

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Учебное пособие
ОСНОВЫ
ПРОГРАММИРОВАНИЯ
НА ЯЗЫКЕ PYTHON
Учебное пособие
С. К. БУЙНАЧЕВ
Н. Ю. БОКЛАГ

Министерство образования и науки Российской Федерации
Уральский федеральный университет имени первого Президента России Б. Н. Ельцина
С. К. Буйначев, Н. Ю. Боклаг
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ PYTHON
Рекомендовано методическим советом УрФУ
в качестве учебного пособия для студентов,
обучающихся по направлениям подготовки
151000 «Технологические машины и оборудование»,
190100 «Наземные транспортно-технологические комплексы»,
190600 «Эксплуатация транспортно-технологических машин
и комплексов»
Екатеринбург
Издательство Уральского университета
2014

УДК 004.432Python(075.8)
ББК 32.973.26-018.1Pythonя73
Б90
Рецензенты: доц., д-р техн. наук Е. Е. Баженов (Уральский госу- дарственный экономический университет); доц., канд. техн. наук В. П. Подогов (Российский государственный профессионально-педагогический университет)
Научный редактор – доц., канд. техн. наук Ю. В. Песин
Б90
Буйначев, С. К.
Основы программирования на языке Python : учебное посо- бие / С. К. Буйначев, Н. Ю. Боклаг. – Екатеринбург : Изд-во
Урал. ун-та, 2014. – 91, [1] c.
ISBN 978-5-7996-1198-9
Пособие содержит начальные сведения о программировании на языке
Python и является основой для изучения курса «Численные методы и оптимиза- ция». Собраны сведения из книг таких известных авторов, как Г. Россум,
М. Лутц, Р. Сузи, Д. Бизли, А. Лесса. Предложен новый подход к использова- нию баз данных для накопления результатов расчета с дальнейшим анализом и визуализацией решений.
Может быть рекомендовано студентам различных специальностей техниче- ских вузов, занимающихся программированием, математическим моделирова- нием и численными методами, а также может служить справочным материалом при выполнении курсовых и дипломных работ, связанных с расчетами на ком- пьютере.
Библиогр.: 10 назв.
УДК 004.432Python(075.8)
ББК 32.973.26-018.1Pythonя73
ISBN 978-5-7996-1198-9
© Уральский федеральный университет, 2014

3
ОГЛАВЛЕНИЕ
1. Запуск оболочки программ и инструкции языка Python .............. 7 2. Встроенные типы данных ................................................................ 8 3. Выражения ....................................................................................... 16 4. Функции ........................................................................................... 19 5. Встроенные функции ..................................................................... 20 6. Классы .............................................................................................. 21 7. Исключения ..................................................................................... 22 8. Функции преобразования типов и классы ................................... 23 9. Числовые и строковые функции ................................................... 24 10. Функции обработки данных ........................................................ 25 11. Функции определения свойств .................................................... 25 12. Функции для доступа к внутренним структурам ...................... 26 13. Функции компиляции и исполнения .......................................... 26 14. Функции ввода-вывода ................................................................ 27 15. Ввод и вывод файлов .................................................................... 27 16. Стандартные файлы ввода/вывода данных, и вывода ошибок ................................................................................................. 28 17. Функции для работы с атрибутами ............................................. 29 18. Модули ........................................................................................... 30 21. Модули стандартной библиотеки ............................................... 31 20. Функции как параметры и результат .......................................... 40 21. Матричные вычисления ............................................................... 49


4 22. Обработка текстов. регулярные выражения. Unicode .............. 61 23. Графический интерфейс .............................................................. 77 26. Иерархия стандартных исключений ........................................... 86
Библиографический список ............................................................... 89

5
1. ЗАПУСК ОБОЛОЧКИ ПРОГРАММ И ИНСТРУКЦИИ
ЯЗЫКА PYTHON
Программы Python выполняются интерпретатором. На компью- терах с системами Unix и Linux интерпретатор можно вызвать, набрав команду python. В системах Windows и Macintosh интерпретатор можно запустить как приложение (либо из меню Start, либо двойным щелчком на пиктограмме интерпретатора). После запуска интерпре- татора появляется подсказка, в которой можно начать отладку опера- торов программы в простом цикле чтения/выполнения. Например, в приведенном ниже выводе интерпретатор отображает сообщение об авторских правах и предоставляет пользователю подсказку >>>, в ко- торой пользователь набирает знакомую команду "Hello World":
Python 1.5.2 (#0, Jun I 1999, 20:22:04)
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> print "Hello World"
Hello World
>>>
Программы можно также помещать в файл:
# helloworld.py print "Hello World"
Исходные файлы Python имеют расширение *.ру. Символ # в предыдущем примере обозначает комментарий, который продолжа- ется до конца строки.
В системе Windows программы Python можно запускать двой- ным щелчком на файле с расширением .ру. При этом происходит за- пуск интерпретатора и выполнение программы в окне терминала.
В таком случае окно терминала немедленно исчезает после того, как программа завершает свое выполнение (чаще всего прежде, чем уда- ется прочитать ее вывод). Чтобы избежать этого, можно воспользо- ваться средой интегрированной разработки (Idle или Pythonwin). Аль- тернативным методом является запуск программы с использованием пакетного файла с расширением *.bat, python -i helloworld.py, со- держащего оператор типаpython -i helloworld.py,который указывает интерпретатору, чтобы он перешел в интерактивный режим после

6 выполнения программы. Можно также изменить расширение файла на *.pyw, что в Windows означает запуск как исполняемого файла (без использования консоли).
В системе Macintosh программы можно выполнять из встроен- ной среды интегрированной разработки. Кроме того, утилита
BuildApplet(включенная в дистрибутив) позволяет преобразовать программу Python в документ, который автоматически запускается интерпретатором при его открытии.
В интерпретаторе программу можно выполнить с помощью функцииехесfilе(),как показано в следующем примере:
>>> execfile("helloworld.py")
Hello World
В системе Unix можно также вызывать Python с использованием символов #! в сценарии командного интерпретатора:
#!/usr/local/bin/python print "Hello World"
Интерпретатор продолжает работу до тех пор, пока не достигнет конца входного файла. При интерактивном выполнении можно выйти из него, введя символ EOF (end of file – конец файла) или выбрав Exit из выпадающего меню (если оно имеется). В Unix в качестве символа
EOF служит ; в Windows – .
Из программы можно также выйти, вызвав функцию sys.exit() или активизировав исключение SystemExit (это эквивалентно).
Например:
>>> import sys
>>> sys.exit() или
>>> raise SystemExit
В программе Python выделяются следующие ступени иерархии:

программы делятся на модули;

модули содержат инструкции;

инструкции состоят из выражений;

выражения создают и обрабатывают объекты.


7
Инструкции в языке Python приведены ниже.
Инструкция
Роль
Пример
1 2
3
Присваивание Создание ссылок a,b,c='ножницы','бумага',
'камень'
Вызовы
Запуск функций f.write('Пролог\n') print
Вывод на консоль print 'Знание – сила' if/elif/else
Операция выбора if 'python' in text: print text for/else
Обработка последова- тельности в цикле for x in thelist: print x while/else
Цикл общего назначе- ния while x>y: y+=1 pass
Пустая инструкция if a: pass break, continue Переходы в теле цикла while 1: if not in line: break try/except/ finally
Обработка исключе- ний try: action() except: print 'action error' raise
Возбуждение исклю- чений raise endSearch, location import, from
Доступ к модулям import sys from sys import stdin def, return, yield Создание функции def f(a,b,c=1,*d): return a+b+c+d[0] def gen(n): for i in n, yield i*2 class
Описание класса class subclass(Superclass): staticData=[] global
Пространство имен def function(): global x,y x='new'

8
Окончание таблицы
1 2
3 del
Удаление ссылок del data[k] del data[i:j] del obj.attr del variable exec
Запуск фрагментов программного кода exec 'import '+modName exec code in gdict, ldict assert
Отладочные проверки assert x > y with/as
Менеджеры контекста with open('data') as myfile: process(myfile)
2. ВСТРОЕННЫЕ ТИПЫ ДАННЫХ
Python – это язык с динамическим контролем типа, в котором имена во время выполнения программы могут представлять значения различных типов. И действительно, имена, используемые в програм- ме, – это только метки для различных величин и объектов. Оператор присваивания просто создает связь между именем и значением.
В этом состоит одно из отличий данного языка, например, от С, в ко- тором имена представлены объектами с постоянным размером и раз- мещением в памяти, где находятся результаты.
Все данные в Python представлены объектами. Имена являются лишь ссылками на эти объекты и не несут нагрузки по декларации типа. Значения встроенных типов имеют специальную поддержку в синтаксисе языка: можно записатьлитерал строки, числа, списка, кортежа, словаря (и их разновидностей). Синтаксическую же под- держку операций над встроенными типами можно легко сделать до- ступной и для объектов определяемых пользователями классов.
Следует также отметить, что объекты могут бытьнеизменчивы-
ми и изменчивыми.Например, строки в Python являются неизменчи- выми, поэтому операции над строками создают новые строки.
Карта встроенных типов (с именами функций для приведения к нужному типу и именами классов для наследования от этих типов):
1. Специальные типы: None, NotImplemented и Ellipsis;
2. Числа:

9 1) целые:

обычное целое int;

целое произвольной точности long;

логическое bool;
2) число с плавающей точкой float;
3) комплексное число complex.
3. Последовательности:
1) неизменчивые:

строка str;

Unicode-строка Unicod;

кортеж tuple;
2) изменчивые:

список list;

отображения;

словарь dict.
4. Объекты, которые можно вызвать:
1) функции (пользовательские и встроенные);
2) функции-генераторы;
3) методы (пользовательские и встроенные);
4) классы (новые и «классические»);
5) экземпляры классов (если имеют метод _call_).
5. Модули.
6. Файлы file.
7. Вспомогательные типы buffer, slice.
Узнать тип любого объекта можно с помощью встроенной функции type().
2.1. Тип int и long
Два типа: int (целые числа) и long (целые произвольной точно- сти) – служат моделью для представления целых чисел. Первый соот- ветствует типу long в компиляторе С для используемой архитектуры.


10
Числовые литералы можно записать в системах счисления с основа- нием 8, 10 или 16:
# В этих литералах записано число 10 print 10, 012, 0xA. 10L
Набор операций над числами достаточно стандартный как по семантике, так и по обозначениям:
>>> print 1 + 1, 3 – 2, 2*2, 7/4, 5%3
>>> print 2L ** 1000
Значения типа int должны покрывать диапазон от 2147483648 до
2147483647, а точность целых произвольной точности зависит от объема доступной памяти.
2.2. Тип float
Соответствует С-типу double для используемой архитектуры.
Записывается вполне традиционным способом либо через точку, либо в нотации с экспонентой:
>>>pi=3.1415926535897931
>>>pi**40 7.6912142205156999e+19
2.3. Тип bool
Подтип целочисленного типа для канонического обозначения логических величин. Два значения: True(истина) и False(ложь) – вот и все, что принадлежит этому типу. Любой непустой и ненулевой объ- ект Python имеет значение True.
2.4. Тип string и тип Unicode
В Python строки бывают двух типов: обычные и Unicode-строки.
Фактически строка – это последовательность символов (в случае обычных строк можно сказать «последовательность байтов»). Стро- ки-константы можно задать в программе с помощью строковых лите- ралов. Для литералов наравне используются как апострофы «'», так и обычные двойные кавычки «"». Для многострочных литералов можно использовать утроенные апострофы или утроенные кавычки. Управ-

11 ляющие последовательности внутри строковых литералов задаются обратной косой чертой (\). Примеры написания строковых литералов: s1 = "строка 1" s2 = 'строка2\n с переводом строки внутри' s3 = """строка3 с переводом строки внутри""" ul = u'\u043f\u0440\u0438\u0432\u0435\u' # привет u2 = u'Еще пример' # не забудьте про coding!
Для строк имеется еще одна их разновидность – необработан-
ные строковые литералы. В этих литералах обратная косая черта и следующие за ней символы не интерпретируются как спецсимволы, а вставляются в строку как есть: my_re = г"(\d)=\1"
Набор операций над строками включаетконкатенацию
«+», по- втор «*», форматирование «%». Также строки имеют большое коли- чество методов, некоторые из них приведены ниже. Полный набор методов (и их необязательных аргументов) можно получить в доку- ментации по Python.
>>> "А" + "В"
'АВ'
>>>"А"*10
'АААААААААА'
>>> "%s %i" % ("abc", 12)
'abc 12'
Некоторые методы строковых объектов будут рассмотрены далее.
2.5. Тип tuple
Для представления константной последовательности (разнород- ных) объектов используется тип кортеж. Литерал кортежа обычно за- писывается в круглых скобках, но можно, если не возникают неодно- значности, писать и без них. Примеры записи кортежей:


12 р= (1.2, 3.4, 0.9) p1 = 1, 3, 9 # без скобок р2 = 3, 8, 5, # запятая в конце игнорируется
Использовать синтаксис кортежей можно и в левой части опера- тора присваивания. В этом случае на основе вычисленных справа значений формируется кортеж и связывается один в один с именами в левой части. Поэтому обмен значениями записывается очень ком- пактно: c, a, b = a, b, c
2.6. Тип list
В «чистом» Python нет массивов с произвольным типом элемен- та. Вместо них используются списки. Их можно задать с помощью литералов, записываемых в квадратных скобках, или посредством списковых включений.Варианты задания списка приведены ниже: lst1 = [1, 2, 3,] lst2 = [x**2 for x in range<10) if x % 2 == 1] lst3 = list("abcde")
Для работы со списками существует несколько методов, допол- нительных к тем, что имеют неизменчивые последовательности. Все они связаны с изменением списка.
2.7. Последовательности
Ниже обобщены основные методы последовательностей. Следу- ет напомнить, что последовательности бывают неизменчивыми и из- менчивыми. У последних методов чуть больше.
Синтаксис
Семантика len(s)
Длина последовательности s х in s
Проверка принадлежности элемента последова- тельности. В новых версиях Python можно прове- рять принадлежность подстроки строке. Возвраща- ет True или False

13
Окончание таблицы х not in s
== not х in s s + sl
Конкатенация последовательностей s*n или n*s
Последовательность из n раз повторенной s. Если n < 0, то возвращается пустая последовательность s[i]
Возвращает i-й элемент s или len(s) + i-й, если i < 0 s[i:j:d]
Срез из последовательности s от i до j с шагом d min(s)
Наименьший элемент s max(s)
Наибольший элемент s s[i]=х i-й элемент списка s заменяется на х s[i:j:d]= t
Срез от i до j (с шагом d) заменяется на (список) t del s[i:j:d]
Удаление элементов среза из последовательно- сти
Методы изменчивых последовательностей
Метод
Описание append(x)
Добавляет элемент в конец последовательно- сти count(x)
Считает количество элементов, равных х extend(s)
Добавляет к концу последовательности по- следовательность s index(x)
Возвращает наименьшее i, такое что s[i]==х.
Возбуждает исключение ValueError, если х не найден в s insert(i, x)
Вставляет элемент х в i-й промежуток pop([ i ])
Возвращает i-й элемент, удаляя его из после- довательности reverse()
Меняет порядок элементов s на обратный sort([cmpfunc])
Сортирует элементы s. Может быть указана своя функция сравнения cmpfunc

14
Взятие элемента по индексу и срезы
Здесь же следует сказать несколько слов об индексировании по- следовательностей и выделении подстрок (и вообще – подпоследова- тельностей) по индексам. Для получения отдельного элемента после- довательности используются квадратные скобки, в которых стоит выражение, дающее индекс. Индексы последовательностей в Python начинаются с нуля. Отрицательные индексы служат для отсчета элементов с конца последовательности (-1 – последний элемент).
Пример:
>>> s = [0, 1, 2, 3, 4]
>>> print s[0], s[-l], s[3]
043
>>> s[2] = -2
>>> print s
[0, 1, -2, 3, 4]
>>> del s[2]
>>> print s
[0, 1, 3, 4]
Примечание. Удалять элементы можно только из изменчивых последова- тельностей и категорически не делать этого внутри цикла при их обработке.
Есть особенности при работе сосрезами. В Python при взятии среза последовательности принято нумеровать не элементы, а про- межутки между ними. Поначалу это кажется необычным, тем не ме- нее очень удобно для указания произвольных срезов. Перед нулевым
(по индексу) элементом последовательности промежуток имеет но- мер 0, после него будет 1
и т. д. Отрицательные значения отсчитыва- ют промежутки с конца строки. Для записи срезов используется следующий синтаксис: последовательность[нач:кон:шаг] где нач