Автор Питона - Ван Россум. Голландия. Первая публикация кода - 1991г. Название « Python » - из телевизионного шоу «Летающий цирк Монти Пайтона».
2. Переменные и типы данных. Операторы присваивания и сложения .
Переменная - это любое имя в коде с присвоенным значением этому имени. Например: variable = "переменная"
Тип данных это: числа (1; 3; 1.2; 34.76) и строки (символы в одинарных или двойных кавычках - 'hello' ; "Привет!"; "1; 3; 1.2; 34.76").
Применение разных кавычек в начале и конце строки приведёт к ошибке. Числовые значения записываются без кавычек.
Оператор присваивания это символ равно: «= », который присваивает переменной какое-нибудь значение: variable = "переменная"
Оператор сложения это символ плюс: «+», который числа складывает 1+3+1.2+34.76 = 39.96, а строки объединяет "1"+"3"+"1.2"+"34.76" = 131.234.76.
Числа и строки не складываются - их сложение приводит к ошибке.
При умножении строки на число строка копируется несколько раз по множителю: 'хо' * 10 → хохохохохохохохохохо
3. Преобразование типов данных выполняется функциями str() и int() .
Функция str(35) преобразует число 35 в строку "35", а функция int("35") преобразует строку "35" в целое число 35. string - строка, integer - целое число.
4. Комментарии и ошибки. Синтаксис и исключения.
Ошибками в Python считаются только синтаксические ошибки (SyntaxError). Все остальные ошибки - это исключения (exceptions). Все что написано в коде после символа решётка « # » это комментарии и они не выполняются.
Ошибка может быть не только в той строке кода на которую указана, но и в предыдущей строке.
5. Именование переменных выполняется только латынью, цифрами и подчеркиванием.
- Латинские буквы от а до z и от А до Z. В Python есть различия между прописными и строчными буквами алфавита, например: variable, Variable, VARIABLE - разные имена переменных.
- Цифры от 0 до 9.
- Символ нижнего подчеркивания: «_»
6. Вывод на экран. Функция print().
print(аргументы) выводит на экран аргументы - строки,числа и значения переменных путем их сложения через плюс «+» или их перечисления через запятую « , ». Эта функция не только выводит на экран, но в ней могут выполняться операции вычисления с переменными и числами. Например:
Разделителем между аргументами функции print () может быть как пробел (по умолчанию): print('Вася','Маня') → Вася Маня , но и любой символ с помощью функции sep(): print("Вася", "Маня", sep="+") → Вася+Маня. А при записи команды без sep(): print("Вася"+ "Маня")→ ВасяМаня , результат уже будет другой, что и называется «конкатенация» - объединение нескольких строк в одну (от лат. concatenatio, «присоединение, сцепление»).
7. Дробные числа. Функции float() , str() , int() .
Тип данных float - предназначен для хранения десятичных дробей. Функция float() преобразует строку в десятичное число: float('38,2') - это уже десятичное число 38,2 из строки '38,2'. Функция str() преобразует целые и дробные числа в строки: str(38,2)- это уже строка '38,2' из десятичного числа 38,2 Функция int() приводит дробные числа к целым, но не округляет числа по правилам арифметики, а просто отбрасывает дробную часть: int(3.14) это 3.
8. Список list[ ]. Функция len().
list = [<элемент1>, <элемент2>, <элемент3>,…, <элементN>]
list — это список упорядоченных последовательности элементов (чисел, строк или других значений). Записывается в квадратных скобках [ ] , элементы списка разделяются запятой: list=[5,2,0,6]. У каждого элемента этого списка есть свой порядковый номер — индекс. У первого элемента(5) списка индекс нулевой, у второго(2) индекс первый, у третьего(0) индекс второй, у последнего(6) индекс третий. Функция len(list) вычисляет количество элементов в списке с именем list, и оно равно 4 для списка list=[5,2,0,6].
У списка могут быть повторяющиеся элементы, которые хранятся и выводятся в упорядоченном виде: print([5,6,0,6]) → [5, 6, 0, 6]
Количество элементов в списке определяется: len([5,6,0,6]) равно 4
9. Объединение строк. Метод .join().
Еще одним способом объединения строк (конкатенации) является метод .join(), который записывается как: объект.имя_метода(аргументы). Это мини-программа объединения строк, которая позволяет получить одну строку из списка строк. Объектом в этом методе является разделитель между строками. Например из списка строк friends = ['Серёга', 'Соня', 'Дима', 'Алина', 'Егор'] должна выводиться одна строка без кавычек : Серёга, Соня, Дима, Алина, Егор. Запись метода.join() для этого случая объединения строк выглядит следующим образом : ', '.join(friends), где разделителем является: ', ' (пробел и запятая). Разделитель в этом методе обязателен.
10. Цикл. Оператор for in. Функции range() и reversed().
Цикл — это повторение набора действий до тех пор, пока истинно какое-то условие в теле цикла. Одно такое повторение называется итерацией цикла. Реализуется оператором for in, который перебирает(for) значения переменной в (in) списке или в диапазоне индексов функции range(). Например: for i in range(a,b) означает перебор значений переменной i в диапазоне индексов от «a» до «b», при этом функция range() возвращает значения от «a» до « b -1». Так функция range(2,11) - это последовательность индексов на основе заданного индекса начала (2) и конца (11), если начальный индекс не указан, он считается равным 0. Например, range (5) выводит значения 0,1,2,3,4 (происходит увеличение на 1 до конечного индекса 5), а range(2,11) выводит числа от «2» до «10» (происходит уменьшение конечного индекса на 1). Функция reversed() обрабатывает список, строки и диапазон чисел в обратном порядке. Например reversed(range(2, 11)) выводит числа от «10» до «2».
11. Ветвления. Конструкции if , if else , if elif else .
Ветвления это код с условиями и логическими выражениями (== равно; <меньше; >больше) и которые могут возвращать ответы: истинно, ложно, истинно или ложно. Так выражение с переменной х==5 означает, а правда ли х равно 5? Два ответа(истинно или ложно) в зависимости от того чему равно х : «да, правда» - это истинна True; или «нет, неправда» - это ложь False. Выражение с постоянной 5 < 3 означает, а правда ли 5 меньше 3? Один ответ: False (ложно). Выражение: 100>1 означает, а правда ли 100 больше 1? Один ответ: True (истинно).
Ветвление объявляют оператором if или конструкциями if else и if elif else в которых присутствует логическое выражение.
Например: if x==5 означает выполнение условия только для одного значения равному 5, а в конструкции: if x==5 else выполнение двух условий, как для 5, так и для всех значения переменной «х» не равной 5. В конструкции: if x==5 elif x==3 elif x==1 else выполняются четыре условия: для каждого из значений равных 5,3,1 и отдельно (else} для всех остальных значений не равных 5,3,1. С конструкцией if elif else код выглядит понятней.
12. Логические выражения. Операторы и операции. Склонения фраз. Составное логическое выражение.
Для склонения фраз и получения правильных окончаний слов применяются ветвления, логические операторы и операции. Пример кода склонения для сообщений от 0 до 99:
Склонения могут использовать операцию получения остатка от деления, обозначающееся символом процента «%»: 0%10 это 0, 1%10 = это 1, 5%10=5, 10%10=0, 11%10=1, 21%10=1, 25%10=5, 30%10=0 и т.д. В приведенном коде (рис. 5) при склонении 11-ть сообщений, 21,31,41,51,61,71,81,91-одно сообщение остаток одинаковый, а поскольку код выполняется построчно сверху вниз и если переменная подходит для нескольких условий, то срабатывает условие, написанное в коде выше. Поэтому проверка остатка равному 1, ставится в конце кода для исключения ошибки по остатку, равному 1.
Логические операторы можно объединять в составные логические выражения. В таких выражениях операторы выполняются не в порядке записи, а в порядке приоритета: высший приоритет у not, затем выполняется and, а последним — or. Пример такого составного выражения: «if not x > 40 or x < 45 and x != 42:», а порядок выполнения: «not x > 40» → «x < 45 and x != 42» → «not x > 40 or x < 45 and x != 42»
13. Аргументы и функции. Двоеточие, четыре пробела и два апострофа подряд.
' ' – два апострофа подряд предусмотрено для случая, если при вызове функции не передается ожидаемый аргумент и тогда ему присваивается значение по умолчанию: «аргумент» =' '. Например функция печати числа друзей и их имён: def print_friends_count(friends_count, name=' '), где «print_friends_count» - имя функции; (friends_count, name=' ') - это два аргумента функции: «friends_count» - количество друзей и «name=' '» - имя друга, но имя его неизвестно. Для случая, когда «name» известно и передается в функцию, объявление функции не изменится, поскольку в ней предусмотрено обработка не пустого аргумента (например для name='Артём').
14. Разбиение на функции. Запросы к функциям.
В крупных проектах все повторяющиеся коды разбиваются на отдельные функции перед телом основной программы. Обращение к таким отдельным функциям называется вызов или запрос функции, которые стоят в теле (после функций и без 4-х пробелов) основной программы.
Важно: если функция записана, а запроса нет, то результата не будет (пустой результат на экране).
15. Счётчик. Создается переменной, оператором «for in» и операторами присваивания: «=», «+=», «-=»
16. Оператор return - выполняет выход из функции и возвращает результат вычисления этой функции.
«Возвращать» значение означает выдать результат вычисления функции. Без return функция ничего не возвращает и выдает сообщение (None).
Смысл этого оператора в том, чтобы использовать возвращённое значение в дальнейшей работе программы для каких-то вычислений. Например для вызова другой функции из данной функции и применение возвращенного значения в вычислениях другой функции .
17. Словарь dict{ }. Доступ dict['key'] , методы dict.keys() и dict.values() .
В словаре значения могут повторяться, а ключи нет.
Доступ по ключу dict['key'] в команде print(dict['key']) - выводит значение(value) заданного ключа (key). Метод dict.keys() – дает все ключи (keys) словаря. Метод dict.values() – дает все значения (values) словаря. Метод dict.update(dict1) объединяет два словаря - добавляет элементы dict1 в dict.
Замена значения словаря по ключу или создание нового элемента словаря: dict['key'] = 'value'
Поиск значения в словаре по переменной (variable) равной ключу: dict[variable] = value
18. Перебор элементов словаря. Метод .items(). Создание словаря.
Перебор всех элементов словаря можно циклом «for in»: по ключам – for in dict.keys(); по значениям - for in dict.values(); одновременно по ключам и значениям, методом .items – for in dict.items(). Метод.items возвращает набор пар ключ-значение.
Порядок создания словаря из двух списков состоит из создания пустого словаря, перебора значений индекса первого списка и заполнения словаря его элементами: dict= {} → for i in range (0, len(list1)) → dict[list1[i]] = list2[i].
19. Множество set {}. Функция set().
Множество не содержит повторяющихся элементов, элементы хранятся в неупорядоченном виде и выводятся в случайном порядке.
Множество объявляется встроенной функцией set(): unique_list = set(list). У множества unique_list после преобразования списка [list] отсутствуют повторяющиеся элементы, в отличии от списка. А после преобразования словаря: keys_dict = set(dict) - полученное множество keys_dict содержит только ключи словаря (значения словаря в множество не переносятся).
20. Коллекции это списки, словари и множества.
Проверка наличия элемента в коллекциях выполняется условной конструкцией <if in>. Оператор <in > у словарей определяет только ключи. Конструкция <if not in> - если в коллекции чего-то нет. Метод .append() добавляет элемент в конец списка и записывается: [список].append(аргумент).
Создать множество можно вручную, вводя все элементы в фигурные скобки {} и разделяя их запятыми, а также с помощью функции set(), которая преобразовывает строки, списки, словари в множества. Функция list() выполняет обратное преобразование словаря в список.
22. Прототип запроса Python к базе данных.
Работа со словарём, заключается в поиске нужных ключей и
значений, удаления дубликатов и дальнейшего извлечения необходимых данных из словаря. Эта работа похожа на то, что происходит на реальном сервере, куда поступил запрос. Работающей моделью или прототипом запроса Python к базе данных является запрос, названный например runner() к функции def runner(), на извлечение данных. Извлечение данных заключается в записи print() в теле def runner(). Аргументом print() являются запросы к функциям обработки элементов словаря или базы данных.
23. Строки и форматирование. Методы .split() и .strip()
Метод .join() и метод.split() могут менять символы, например: print("%20".join("как стать бэкенд-разработчиком".split(" "))). В строке "как стать бэкенд-разработчиком" пробел меняется на %20, тогда получится следующая фраза: как%20стать%20бэкенд-разработчиком.
24. Форматированные строки (f-строки)
В коде (рис.17) персонального ассистента Анфисы были сведения о том, где живут друзья и три общих вопроса, на которые она могла отвечать. Для расширения возможностей кода Анфисы, в следующем примере (рис.22) добавлены еще четыре вопроса и теперь она может отвечать уже на семь вопросов:
26. Библиотека - это набор функций с общей темой.
import <название библиотеки> - команда вызова библиотеки или модуля. Записывается в начале кода программы. Такая запись иначе называется «подключить модуль». Например, import random или с присвоением нового имени: import random as r.
27. Библиотека datetime. Работа со временем.
В библиотеке datetime есть не только отдельные функции, но и новый тип данных - тоже datetime. Например: dt.datetime(1961, 4, 12, 9, 7, 0) это тип данных datetime из библиотеки datetime(или dt): 1961-04-12 09:07:00
UTC — «coordinated universal time» всемирное координированное время.
29. Форматирование времени. Метод .strftime()
Метод.strftime() - переменная.strftime(аргумент). Используется для вывода необходимого формата времени. Аргументом является следующий формат времени: %H часы, %M — минуты, %B — месяц, %Y — год и %S — секунды, %A — название дня недели по-английски, %U — номер недели в году. Например: dt.datetime(2019, 5, 10, 19, 45).strftime('%H:%M') - это 19:45, где «dt.datetime(2019, 5, 10, 19, 45) » - переменная в этом методе.
30. Протокол HTTP. Адрес в интернете URL .
HTTP (от англ. HyperText Transfer Protocol, «протокол передачи гипертекста»). Отвечает за передачу написанных гипертекстом веб-страниц с сервера на клиент и обратно. Протокол HTTPS - Расширение протокола HTTP. HTTPSecure – от англ. «безопасный HTTP». URL - Uniform Resource Locator – от англ. «единый указатель ресурса». В URL используются только латинские буквы, цифры и отдельные знаки пунктуации. Остальные символы кириллицы и других языков закодированы. Так пробел - это %20, а символ ё - это %D1%91
31. Кириллица в адресной строке. Библиотека urllib.parse
Библиотека urllib.parse используется для кодировки URL . Выполняет расшифровку URL кода в кириллицу или другой язык: decoded = urllib.parse.unquote(encoded_string), где decoded - переменная с расшифрованным значением , encoded_string - переменная с закодированным значением строки в URL.
32. Исходный код веб-страницы - HTML.
HTML - Hyper Text Markup Language (англ. «язык разметки гипертекста»). Обычный текст, написанный на любом из человеческих языков, преобразуется в гипертекст — с устойчивым форматированием и работающими ссылками. Для просмотра HTML текущей веб-страницы (в новой вкладке) зажимаются две клавиши на клавиатуре: Ctrl + U.
33. Headers - Заголовки ответов - Response Headers
Сообщения, отправленные клиентом к серверу, обычно веб-браузером, называются запросами, а сообщения, отправленные сервером, называются ответами. Заголовки ответов отправляются сервером обратно после запроса к нему. Просмотр заголовка ответа на текущей странице: (F12 или через меню браузера) → закладка«Network» → doc → обновить страницу → name → раздел Response headers
34. HTTP-запросы. Заголовки запросов - Request Headers
HTTP-запрос (также называемый HTTP-метод) указывает серверу на то, какое действие надо произвести с ресурсом. Просмотр заголовка запроса на текущей странице: (F12 или через меню браузера) → закладка«Network» → doc → обновить страницу → name → раздел Request Headers.
35. Библиотека requests. Python вместо браузера.
Библиотека requests используется для связи с серверами в интернете. С ее помощью можно написать программу клиента на Python и напрямую без браузера запросить веб-страницу с нужным адресом: requests.get('https://ya.ru/white')
36. Передача параметров в URL. Функция get() .
Функция get(url, params=имя словаря) выполняет формирование адреса интернета посредством подстановки основного URL и дополнительных параметров к URL из словаря в коде.
37. Заголовки HTTP-запросов и ответов в Python.
Чтение заголовков HTTP-запросов и ответов может выполняться как в браузере, так и в коде Python. Получение заголовка и чтение заголовка в Python: headers = response.headers → print(headers["content-type"])
38. Обработка ошибок. Исключение. Конструкция try – except .
runtime error – ошибки, которые не проявляются с первого раза и зависят от внешних факторов: ZeroDivisionError (при делении на ноль), ValueError (при вычислении квадратного корня из отрицательного числа) и т.д.
Исключение (exception) – это объект, который собирается в исключительных случаях при сбое функции. try – except - это конструкция для обработки ошибок в исключительных случаях. Достоинство исключений - обработка ошибки во время выполнения программы без вмешательства пользователя.
39. Финальное расширение возможностей запросов к друзьям.
К расширенным возможностям кода Анфисы (рис.22), в следующем примере (рис.24) добавлены еще семь вопросов и теперь она может окончательно отвечать уже на четырнадцать вопросов:
К конспекту Django →