Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование на языке Python. Учебное пособие.pdf
X
- •ПРЕДИСЛОВИЕ
- •I. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ
- •1. Начало работы
- •2. Основные понятия
- •Ввод и вывод данных
- •Логические операторы
- •Условные инструкции
- •Инструкции
- •Типы данных
- •Константы и переменные
- •Арифметические операторы
- •Операторы сравнения
- •3. Функции
- •Определение функций
- •Встроенные функции
- •Многократное использование функций
- •Типы параметров функции
- •Область видимости
- •Обработка исключений
- •Строки документации
- •4. Контейнеры
- •Методы
- •Списки
- •Кортежи
- •Словари
- •Контейнеры внутри контейнеров
- •5. Операции со строками
- •6. Циклы
- •Цикл for
- •Цикл while
- •Операторы break и continue
- •Функция Enumerate
- •Вложенные циклы
- •Настройка функции print()
- •7. Модули
- •8. Файлы
- •Запись в файлы
- •Использование конструкции with
- •Чтение из файлов
- •CSV-файлы
- •II. ВВЕДЕНИЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП)
- •9. Парадигмы программирования
- •Состояние
- •Процедурное программирование
- •Функциональное программирование
- •Объектно-ориентированное программирование
- •10. Базовые понятия ООП
- •Наследование
- •Полиморфизм
- •Абстракция
- •Инкапсуляция
- •Композиция
- •11. Дополнительные понятия ООП
- •Как работают переменные
- •Ключевое слово is
- •Константа None
- •Классы – это объекты
- •Переменные класса и переменные экземпляра класса
- •Приватные переменные
- •Методы переопределения
- •Функция super
- •Переопределение встроенных методов
- •12. Создание игр
- •Карты
- •Колода
- •Игрок
- •Игра
- •Игра «War»
- •13. Bash
- •Запуск Bash
- •Использование Bash
- •Относительные и абсолютные пути
- •Навигация
- •Флаги
- •Редактор vim
- •Команда touch
- •Просмотр файлов командой less
- •Пользователи
- •Разрешения
- •Программы Bash
- •Скрытые файлы
- •Переменные окружения
- •Переменная окружения $PATH
- •Вертикальная черта (пайп)
- •Команда cat
- •Последние команды
- •Быстрые перемещения
- •Экранирование (escaping)
- •Регулярные выражения в Python
- •15. Менеджеры пакетов
- •Вкладка «Завершение»
- •Функция wildcard (подстановочный знак)
- •Другие инструменты
- •14. Регулярные выражения
- •Настройка
- •Простое совпадение
- •Игнорирование регистра
- •Вывод только конкретных совпадений слов
- •Совпадение в начале и в конце
- •Поиск совпадений с несколькими символами
- •Повторение
- •Диапазон
- •16. Управление версиями
- •Репозитории
- •Помещение и извлечение данных
- •Пример помещения данных
- •Пример извлечения данных
- •Откат версий
- •Команда git diff
- •Другой запрос на включение
- •IV. ВВЕДЕНИЕ В ИНФОРМАТИКУ
- •17. Структуры данных и алгоритмы
- •Что такое алгоритмы и структуры данных?
- •Нотация Big-O
- •Оператор деления по модулю
- •Сортировка методом пузырька
- •Поисковый алгоритм
- •Рекурсия
- •Абстрактные типы данных
- •Узлы
- •Стеки
- •Связанные списки
- •Массивы
- •Бинарные деревья
- •Поиск в ширину и в глубину
- •Хэш-таблицы
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

Пример программы, осуществляющей несколько элементарных вычислений:
Входные данные:
Выходные данные:
Alex
What is your name?
Hello, Alex!
Входные данные:
Выходные данные:
5 7 57
print(5 + 10)
print(3 * 7, (17 - 2) * 8)
print(2 ** 16) # две звёздочки означают возведение в степень
print(37 / 3) # один слэш – это деление с ответом-дробью
print(37 // 3) # два слэша считают частное от деления нацело
# это как операция div в других языках
print(37 % 3) # процент считает остаток от деления нацело
# это как операция mod в других языках
>> 15
>> 21 120
>> 65536
>> 12.333333333333334
>> 12
>> 1
Ввод данных в программу реализуется функцией input(). Она считывает
одну строку. В нижеприведенной программе считывается имя пользователя
и программа приветствует его:
print('What is your name?')
name = input() # считываем строку в переменную name
print('Hello, ' + name + '!')
Напишем программу, считывающую два числа и выводящую их сумму.
a = input()
b = input()
s = a + b
print(s)
11

Обратите внимание, что вместо 12-ти программа выводит ошибочное зна-
Выходные данные:
35
Входные данные:
Выходные данные:
5 7 12
чение 57. Дело в том, что Python «сложил» две строки, а не два числа. В Python
сложение двух строк осуществляется так: к первой строке приписывается вторая. Эта операция называется конкатенацией и будет подробнее рассмотрена
ниже.
Особо подчеркнем, что в Python все данные называются объектами и любой объект имеет характерный для него тип (подробнее этот вопрос рассмотрен
ниже), а тип объекта в свою очередь определяет, какие операции можно с ним
совершать. Например, объекты типа int (целый) можно перемножать, а объекты
типа str (строка) перемножать нельзя:
first = 5
second = 7
print(first * second)
first = '5'
second = '7'
print(first * second) # недопустимая операция для типа str
При исполнении кода в последней строке будет выдано сообщение о недопустимой операции: TypeError: Can't multiply sequence by non-int of type 'str'.
Преобразовать строку из цифр в целое число можно с помощью функции
int(). Например, int('23') вернет целое число 23.
Вот правильный вариант вышеприведенной ошибочной программы, которая считывает два числа и выводит их сумму:
a = int(input())
b = int(input())
s = a + b
print(s)
12

Типы данных
должны быть одинаковыми в начале и в конце строки, то ес
Данные в Python сгруппированы в различные категории, называемые ти-
пами данных. В Python каждое значение, например 2 или "Hello,
World!", называется объектом. Объект характеризуется идентификатором,
типом данных и значением.
"Hello, World!" – объект с типом данных str (сокращенно от англ.
слова string – строка) и значением "Hello, World
!". Строка представляет
собой последовательность из одного или нескольких символов, помещенных
в кавычки. Можно использовать одинарные или двойные кавычки, но они
ть "Hello,
World!" или 'Hello, World!'
Символ – это один знак, вроде a или 1.
Целые числа (1, 2, 3, 4 и т.д.) имеют тип данных int (сокращенно от англ.
слова integer – целый).
Вещественные (действительные, реальные) числа (числа с десятичной точ-
кой) имеют тип данных float. 2.1, 8.2 и 9.9999 все являются объектами
с типом данных float. Они называются числами с плавающей точкой.
2.2 + 2.2
>> 4.4
Объекты, имеющие тип данных bool, называются булевыми или логиче-
скими, они принимают значение True или False, то есть могут быть истин-
ными или ложными.
Объекты с типом данных NoneType всегда имеют значение None. Они
используются для представления отсутствия значения
None
Константы и переменные
Python позволяет выполнять любые математические операции. Заметим,
что при сложении, вычитании и умножении целых чисел результат также является целым типом, однако при делении целых чисел результат является вещественным типом.
13

4 + 3
>> 7
12 / 3
>> 4.0
Разница между константой и переменной состоит в том, что константа
в процессе выполнения программы сохраняет свое значение, а переменная может изменяться. Имя переменной, состоящее из нескольких символов, присваивается значению оператором присваивания, в качестве которого используется
символ =.
В отличие от большинства языков программирования в Python нет необходимости объявлять переменную, ей просто присваивается значение с помощью
оператора присваивания.
a = 10
a
>> 10
В следующем фрагменте продемонстрировано изменение значения переменной:
x = 10
x
x = 20
x
>> 10
>> 20
a = 20
b = 20
c = a + b
c
d = a - b
d
>> 40
>> 0
14

Чтобы увеличить (инкрементировать) или уменьшить (декрементиро-
I способ
II способ
x = 100
>> 101
x = 100
>> 101
x = 100
>> 99
x = 100
>> 99
Оператор
Значение
Пример
Результат
**
Возведение в степень
3 ** 2
9
%
Деление по модулю
19 % 6
1
//
Целочисленное деление
5 // 4
1
/
Деление
5 / 4
1.25
*
Умножение
4 * 3
12
-
Вычитание
5 - 3
2
+
Сложение
4 + 3
7
вать) значение переменной в Python, существуют два равноценных способа:
x = x + 1
x
x = x - 1
x
x += 1
x
x -= 1
x
Переменным можно присваивать любые имена, но необходимо придержи-
ваться следующих правил.
1. Имена переменных не могут содержать пробелы. Если вы хотите ис-
пользовать в имени два слова, укажите между ними знак нижнего подчеркивания: например, my_variable = "Строка!".
2. Имена переменных могут содержать только латинские буквы, цифры
и символ подчеркивания.
3. Нельзя начинать имя переменной с цифры.
4. Нельзя использовать ключевые слова в качестве имен переменных.
Арифметические операторы
В таблице приведены наиболее используемые арифметические операторы.
15

Примечание. Деление по модулю возвращает остаток от деления.
Оператор
Значение
Пример
Результат
>
Больше
10 > 5
True
<
Меньше
10 < 5
False
>=
Больше или равно
5 >= 5
True
<=
Меньше или равно
2 <= 7
True
==
Равно
5 == 8
False
!=
Не равно
5 != 3
True
Оператор
Значение
Пример
Результат
and
И
True and True
True
or
ИЛИ
True or False
True
not
НЕ
not True
False
Порядок операций в Python полностью совпадает с принятым в математике. Если у операторов одинаковая очередность, как в случае 18 / 6 × 4, операция
выполняется слева направо. В данном случае ответом является результат деле-
ния 18 на 6, умноженный на 4, т.е. 12.
(4 + 3) * 5
>> 35
Операторы сравнения
10 > 5
>> True
Примечание. Заметим, что символ = используется для присвоения значения переменной, а не для проверки на равенство. Когда вы видите x = 10, читайте выражение как «x получает 10». Оператор сравнения == используется для
проверки равенства, поэтому, если вы видите x == 10, читайте выражение как
«x равно 10».
Логические операторы
16

1 == 1 and 2 == 2
>> True
1 == 1 and 10 != 2 and 2 < 10
>> True
1==1 or 1==2 or 1==3
>> True
not 1 == 1
>> False
Условные инструкции
Условная инструкция – это конструкция (оператор), в которой принимает-
ся решение в зависимости от анализа значения переменных и осуществляется
ветвление в зависимости от условий.
В условных инструкциях используются ключевые слова if, elif (сокра-
щение от «else if») и else.
Общий вид условной конструкции if-else:
if (условие):
(операторы_1)
else:
(операторы_2)
Представленная конструкция работает следующим образом: если усло-
вие истинно, то выполняются операторы_1, если ложно – операторы_2.
home = "Россия"
if home == "Россия":
print("Привет, Россия!")
else:
print("Привет, мир!")
>> Привет, Россия!
17

Можно использовать лишь одну ветвь оператора if:
home = "Россия"
if home == "Россия":
print("Привет, Россия!")
>> Привет, Россия!
Можно использовать несколько инструкций if подряд:
x = 2
if x == 2:
print("Число: 2.")
if x % 2 == 0:
print("Число: четное.")
if x % 2 != 0:
print("Число: нечетное.")
>> Число: 2.
>> Число: четное.
Можно вложить одну инструкцию if внутрь другой инструкции if:
x = 20
y = 21
if x == 20:
if y == 21:
print(x + y)
>> 41
Рассмотрим использование инструкции elif. Если внутри инструкции
if-else есть инструкции elif, значение выражения инструкции if оценива-
ется первым. Если это выражение равно True, выполняется только его код.
Однако если он принимает значение False, тогда оценивается каждая последующая инструкция elif. Как только выражение в инструкции elif принимает значение True, выполняется ее код и никакой другой. Если ни одна из инструкций elif не принимает значение True, выполняется код в инструкции
else.
18

home = "Тайланд"
if home == "Япония":
print("Привет, Япония!")
elif home == "Тайланд":
print("Привет, Тайланд!")
elif home == "Индия":
print("Привет, Индия!")
elif home == "Китай":
print("Привет, Китай!")
else:
print("Привет, мир!")
>> Привет, Тайланд!
Пример, где выполняется код в инструкции else, т. к. ни одна из ин-
струкций elif не принимает значение True:
home = "Марс"
if home == "Россия":
print("Привет, Россия!")
elif home == "Казахстан":
print("Привет, Казахстан!")
elif home == "Тайланд":
print("Привет, Тайланд!")
elif home == "Мексика":
print("Привет, Мексика!")
else:
print("Привет, мир!")
>> Привет, мир!
Пример кода, содержащего несколько инструкций if и elif:
x = 100
if x == 10:
print("10!")
elif x == 20:
print("20!")
19

else:
print("Не знаю!")
if x == 100:
print("x равно 100!")
if x % 2 == 0:
print("x четное!")
else:
print("x нечетное!")
>> Не знаю!
>> x равно 100!
>> x четное!
Инструкции
В Python различают простые и составные инструкции. Простые инструкции выражаются одной строчкой кода, а составные несколькими.
Примеры простых инструкций:
print("Привет, мир!")
>> Привет, мир!
5 + 3
>> 8
Примерами составных инструкций являются инструкции if и else, а также
программа, выводящая строку Привет, мир! сто раз.
Составные инструкции состоят из заголовка и тела. Заголовок содержит
ключевое слово с двоеточием и одну или несколько строк с отступом. После
отступа содержится тело, состоящее из одной или двух простых инструкций.
Тело – это строка кода внутри ветви. Заголовок управляет телом. Программа,
выводящая Привет, мир! сто раз, состоит из одной составной инструкции:
for i in range(100):
print("Привет, мир!")
>> Привет, мир!
>> Привет, мир!
>> Привет, мир!
…
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
