Добавил:
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
- •Оператор деления по модулю
- •Сортировка методом пузырька
- •Поисковый алгоритм
- •Рекурсия
- •Абстрактные типы данных
- •Узлы
- •Стеки
- •Связанные списки
- •Массивы
- •Бинарные деревья
- •Поиск в ширину и в глубину
- •Хэш-таблицы
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

Навигация
Можно использовать команду cd, которая означает изменение каталога,
чтобы перейти к каталогу, используя абсолютный или относительный путь.
Введите команду cd, за которой следует абсолютный путь / для перехода
к корневому каталогу:
$ cd /
Теперь вы находитесь в своем корневом каталоге. Проверить текущее местоположение можно с помощью команды pwd:
$ pwd
>> /
Команда ls (сокращенно от list) печатает папки в каталоге, в котором вы
находитесь, т.е. в текущем каталоге:
$ ls
>> bin dev initrd.img lost+found ...
Можно создать новый каталог с помощью команды mkdir. В именах каталогов не может быть пробелов. Переместитесь в свой домашний каталог (~ – это сокращение для домашнего каталога в Unix-подобных операционных системах)
и используйте команду mkdir, чтобы создать новый каталог с именем tstp:
$ cd ~
$ mkdir tstp
Убедитесь, что новый каталог существует, с помощью команды ls. Теперь
используйте команду cd, чтобы войти в каталог tstp, передав относительный
путь к tstp в качестве параметра:
$ cd tstp
Теперь используйте команду cd с двумя точками, чтобы вернуться в папку, в которой находились до входа в каталог tstp (т.е. на уровень выше):
$ cd ..
Удалите новый каталог с помощью команды rmdir, что означает удаление каталога:
$ rmdir tstp
Используйте команду ls, чтобы убедиться, что каталог был удален.
121

Флаги
Команды имеют концепцию, называемую флагами, которые позволяют
пользователю, выдавшему команду, изменять поведение команды. Если использовать команду без каких-либо флагов, то для всех флагов команд устанавливается значение false. Но если добавить флаг к команде, он будет установ-
лен в значение true, и поведение команды изменится. Символы – и -- используются для прикрепления флагов к команде. --author – это пример флага, который можно добавить к команде ls, чтобы вывести автора всех каталогов
и файлов, которые будут перечислены. Этот пример предназначен для Linux.
Вот пример использования флага --author с командой ls:
$ ls --author
>> drwx--+ 13 alex 442B Sep 16 17:25 Pictures
…
Если добавите флаг --author в свою команду ls, будет напечатано
название каждого каталога и папки в вашем текущем каталоге, а также некоторая дополнительная информация, включая имя человека, который их создал.
Редактор vim
Vim – текстовый редактор командной строки. Это похоже на Microsoft
Word, за исключением того, что он используется из командной строки. Если
используете Ubuntu, сначала установите vim с помощью команды apt-get
install vim. Не забудьте ввести Y, когда будет предложено. Если использу-
ете Mac, он должен поставляться с vim. Если используете интерактивную оболочку bash, на ней уже установлен vim.
Можно создать новый файл с помощью vim, перейдя в командную строку
и используя команду vim [имя файла для создания]. Используйте команду vim self_taught.txt, чтобы создать новый текстовый файл с именем self_taught.txt. Нажмите клавишу i или Insert и введите абзац текста
в файл. Подойдет любой абзац текста, который найдете в Интернете. Причина,
по которой приходится нажимать клавишу i или Insert при первом вводе файла,
122

заключается в том, что vim имеет разные режимы, оптимизированные для разных действий. Текстовый редактор vim запускается в обычном режиме, который не предназначен для добавления текста в файл (он предназначен для удоб-
ства навигации). Можно удалить текст в обычном режиме, но нельзя вставить
новый текст. Как только нажмете клавишу i или Insert и войдете в обычный режим, сможете использовать vim как текстовый процессор – попробуйте ввести
текст в vim.
Поскольку нельзя перемещать курсор с помощью мыши, важно освоить
несколько сочетаний клавиш для перехода в разные места документа, чтобы
в конечном итоге не использовать клавиши со стрелками на клавиатуре (потому
что это медленно). Чтобы попрактиковаться в перемещении, сначала убедитесь,
что находитесь в обычном режиме (control-c). Можно перейти к началу
слова, нажав b, а к концу слова, нажав e. 0 переместит вас в начало строки, на
которой вы находитесь, в то время как знак доллара $ переместит вас в конец
строки. H переместит вас на первую строку страницы, а L – на последнюю.
Можно удалить целые строки текста в обычном режиме, дважды нажав клавишу d. Потратьте некоторое время на использование этих клавиш, чтобы ознакомиться с навигацией по файлу с помощью vim.
Для выхода из vim нужно сначала переключиться в обычный режим,
нажав control-c. Затем нажать клавишу shift и клавишу двоеточия (все
еще удерживая клавишу shift). Отсюда можно ввести q!, если хотите завершить работу без сохранения изменений в файле, или ввести x, если хотите сохранить изменения и завершить работу. После введения одного из этих параметров нажмите клавишу Enter, чтобы выйти. vim полезен в нескольких ситуациях: доступ к серверам обычно осуществляется только через оболочку ко-
мандной строки, поэтому, если хотите внести изменения в файл на сервере,
нужно использовать текстовый редактор командной строки. После освоения
текстового редактора увидите, что использовать vim для внесения изменений
удобнее и быстрее, чем с помощью обычного текстового процессора. Попробуйте ввести vimtutor в оболочке командной строки Bash и посмотрите, что
произойдет.
123

Команда touch
Можно использовать команду touch, за которой следует путь к файлу,
чтобы быстро создать новый файл:
$ touch purple_carrots.txt
>>
Просмотр файлов командой less
Команда less позволяет просматривать файлы из командной строки. Вы-
берите файл на своем компьютере и используйте команду less [filepath]
для просмотра файла из командной строки в программе less. Убедитесь, что
находитесь в той же папке, в которой создали файл self_taught.txt с помощью vim, и передайте имя файла в качестве параметра:
$ less self_taught.txt
>> whatever text you put in your file
Нажмите q, чтобы выйти.
Пользователи
У операционных систем может быть много пользователей. У каждого
пользователя есть различные действия, которые ему разрешено выполнять,
называемые правами доступа, а также их собственные каталоги и файлы, к которым другие пользователи не могут получить доступ. Пользователей также
можно объединять в группы с указанием всей группы. Увидеть имя пользователя, которым вы являетесь в вашей операционной системе, можно с помощью
команды whoami:
$ whoami
>> alex
Обычно вы начинаете как пользователь, аккаунт которого создали при
установке операционной системы. Этот пользователь не имеет самые широкие
полномочия. Пользователем самого высокого уровня (суперпользователем)
является пользователь root, что означает, что он имеет самый высокий уро-
вень прав доступа. В каждой системе есть пользователь root, который может
124

делать что угодно, например создавать или удалять аккаунты других пользователей.
Для соблюдения безопасности обычно не входят в систему как пользователь
root. Вместо этого используют команду sudo (от англ. словосочетания
superuser do – выполняет суперпользователь) перед другой командой, чтобы вы-
полнить ее как суперпользователь. Команда sudo позволяет делать большинство
вещей от имени пользователя root, но не все. Обязательно будьте осторожны
при использовании sudo, потому что использование команд с sudo может нанести вред вашей операционной системе, если не знаете, что делаете.
Ниже приведен пример использования команды echo с командой sudo.
$ sudo echo Hello, World!
>> Hello, World!
Если на компьютере установлен пароль, то будет предложено его ввести
при использовании команды с sudo. Команда с sudo снимает защитные меры,
которые оберегают операционную систему от нанесения вреда, поэтому никогда не выполняйте команду с sudo, если до конца не уверены, что она не
навредит операционной системе.
Разрешения
Каждый каталог и файл на компьютере имеет набор разрешений. Эти разрешения определяют, какие действия пользователь может выполнять с ними.
Существует три типа разрешений: r – чтение, rw – запись и x – выполнение.
Чтение файла означает его просмотр, запись файла – его изменение, а выполнение файла – запуск как программы. Можно просмотреть права доступа к файлу
или каталогу с помощью команды
ls -lah [имя_файла].
Используйте команду touch, чтобы создать новый файл с именем tstp:
$ touch tstp
>>
Теперь можно просмотреть права доступа к файлам:
$ ls -lah tstp
-rw-r–r– 1 alex staff 5B Feb 21 11:55 test.py
125

Данный файл имеет три разрешения, которые применяются к трем различ-
ным группам пользователей, представленным -rw-r–r–. Первый набор применяется к владельцу файла, второй набор – к группе, которой назначен файл,
а третий набор – ко всем. Таким образом, в этом примере владелец файла имеет
разрешение на чтение и запись файла, тогда как все остальные могут только читать файл.
Можно добавлять и удалять разрешения с помощью команды chmod (со-
кращенно от change mode – режим изменения). Можно добавить разрешение на
чтение с помощью команды chmod +r, разрешение на чтение и запись с помощью команды chmod +rw и разрешение на выполнение с помощью chmod
+x. Также можно удалять одни и те же разрешения с помощью chmod -r,
chmod -w и chmod -x соответственно.
Программы Bash
Если необходимо запустить скрипт bash из командной строки, нужно дать
разрешение на выполнение владельцу файла. Создайте новый файл с именем
hello_world.sh и введите echo Hello, World! в нем. Расширение .sh
используется для того, чтобы любой, кто увидит этот файл, знал, что это скрипт
(сценарий) Bash. Синтаксис ./[имя_файла] используется для выполнения
файла в каталоге, в котором вы находитесь. Запускаете файл с ./[имя_файла],
точка означает поиск файла в текущем каталоге. Можно заменить точку на путь
к файлу. Попробуйте запустить файл (убедитесь, что вы находитесь в том же
каталоге, что и файл):
$ ./hello_world.sh
>> Permission denied
Причина, по которой было отказано в разрешении на печать, заключается
в том, что нет разрешения на выполнение файла. Это можно изменить с помощью команды chmod.
$ chmod u+x hello_world.sh
$ ./hello_world.sh
>> Hello, World!
126

В приведенном выше примере добавили u к +x, чтобы получить u+x, потому что u означает пользователя, и нужно дать себе возможность выполнить
файл. Если необходимо повторить аргумент из предыдущей командной строки,
в данном случае имя файла, можно использовать !$ для представления повторяющегося аргумента.
Скрытые файлы
Операционная система и различные программы на компьютере используют скрытые файлы для хранения данных. Скрытые файлы в Unix-подобных
системах – это файлы, которые по умолчанию не отображаются пользователям, поскольку их изменение может повлиять на программы, которые от них
зависят. Скрытые файлы начинаются с точки, например, .hidden. Можно
увидеть скрытые файлы, используя команду ls с флагом -a, что означает
“все” (от англ. слова all). Создайте скрытый файл с именем .self_taught
и проверьте, видите ли вы его с помощью команд ls и ls -a.
$ touch .self_taught
Переменные окружения
Операционная система может хранить и использовать переменные, называемые переменными окружения. Переменная окружения (переменная среды,
англ. environmental variable) – текстовая переменная операционной системы,
хранящая какую-либо информацию, например данные о настройках системы
или сведения о текущем пользователе. Можно создать новую переменную среды из командной строки с синтаксисом export variable_name=[variable_value].
Чтобы использовать переменную среды, следует поставить знак доллара перед
именем переменной среды. Например:
$ export x=100
$ echo $x
>> 100
Создание переменной среды из командной строки не является постоянным.
Если выйти из командной строки, затем снова открыть ее и набрать echo $x,
терминал больше не будет печатать 100.
127

Можно сделать переменную среды x постоянной, добавив ее в скрытый
файл, используемый Unix-подобными операционными системами, называемый
.profile, расположенный в вашем домашнем каталоге. Перейдите в свой домаш-
ний каталог с помощью команды cd ~ (~ – это ярлык для представления вашего домашнего каталога в Unix-подобных операционных системах) и откройте
файл .profile с помощью vim командой vim.profile. Обязательно войдите
в обычный режим, введите export x=100 в первую строку файла и выйдите
с помощью :x. Закройте и снова откройте командную строку, и вы все равно
сможете распечатать переменную среды, которую определили:
$ echo $x
>> 100
Переменная среды x получает значение 100, если она определена в файле
.profile. Она будет сохранена до тех пор, пока будет содержаться в файле
.profile. Переменную можно удалить, стерев ее из файла .profile.
Переменная окружения $PATH
Когда вводите команду в командную оболочку Bash, она ищет команду во
всех каталогах, хранящихся в переменной окружения с именем $PATH. $PATH –
это строка путей к каталогам, разделенных двоеточиями. Командная оболочка
Bash ищет в каждом из этих каталогов файл, соответствующий имени введенной вами команды. Если файл найден, команда выполняется, если нет, команд-
ная оболочка выводит «команда не найдена». Используйте эхо, чтобы напечатать вашу переменную среды $PATH (команда $PATH может выглядеть иначе,
чем указано здесь):
echo $PATH
>> /usr/local/sbin:/user/local/bin:/usr/bin:
…
В этом примере в $PATH есть три пути к каталогу: /usr/local/sbin,
/user/local/bin и /usr/bin. Оболочка командной строки Bash сможет
выполнить любую команду, найденную в этих трех каталогах. Можно увидеть,
128

где установлена такая команда, как grep, передав ее в качестве параметра команде which:
$ which grep
>> /usr/bin/grep
Команда grep находится в /usr/bin, одном из местоположений в пере-
менной среды $PATH используемой операционной системы.
Вертикальная черта (пайп)
В Unix-подобных системах символ | известен как «пайп» (конвейер).
Можно использовать пайп для передачи вывода одной команды в качестве ввода для другой команды (перенаправление ввода-вывода), например передать
вывод команды ls в качестве ввода команды less, чтобы открыть less со
всеми файлами в текущем каталоге:
$ ls | less
>> Applications
…
Результатом является текстовый файл с выводом ls, открытый в программе less (нажмите q, чтобы выйти из less). Вы не ограничены конвейером
двух команд и можете связать несколько команд вместе, используя конвейеры.
Команда cat
Можно использовать универсальную команду cat для отображения содержимого файла и подключения к сети, что означает “для последовательного
подключения”. Создайте новый файл с именем hello.txt и добавьте
"Hello, World!" в качестве первой строки. Теперь используйте команду
cat, чтобы распечатать содержимое файла:
$ cat hello.txt
>> echo Hello, World!
Чтобы использовать команду cat для объединения двух файлов, сначала
создайте файл с именем c1.txt и добавьте текст Boy. Затем создайте еще
129

один файл с именем c2.txt и добавьте текст Meets World. Теперь можно
объединить их, передав оба файла в качестве параметров команде cat, за кото-
рыми следует символ «больше» ( > ) и имя нового файла:
$ cat c1.txt c2.txt > combined.txt
>>
Откройте только что созданный файл Combined.txt, в котором должно быть
написано «Boy Meets World» (Мальчик встречает мир).
Последние команды
Просматривать последние команды можно, нажимая стрелки вверх ↑
и вниз ↓ в оболочке командной строки. Чтобы увидеть список всех последних
команд, используйте команду history:
$ history
>> 1. echo Hello, World!
>> 2. pwd
>> 3. ls
…
Быстрые перемещения
При вводе команд в терминале могут возникать потребности в редактировании уже введенных команд. Для этого можно использовать клавишу со
стрелкой вправо или влево, чтобы переместить курсор на ту часть, которую
нужно изменить. Но это медленно. Тогда можно использовать клавиши быстрого доступа.
Введите команду echo hello, world! (не нажимая Enter) в терминале
и используйте esc b, чтобы переместить курсор на одно слово назад, и esc
f, чтобы переместить курсор на одно слово вперед. Также можно переместить
курсор в начало строки с помощью элемента управления a или в конец строки с
помощью элемента управления e.
130
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
