Комментарии в Python начинаются со знака # и могут появляться в любом месте программы.
Комментарий может занимать всю строчку:
#print это функция <- это комментарий
print('Hello, World!')
или может находиться на строчке после какого-нибудь кода:
print('Hello, World!') # print это функция
Внимание: любую строку можно превратить в комментарий, достаточно в начале строки набрать комбинацию клавиш Ctrl+/
Числа в Python бывают трёх типов:
целые, например, 4
вещественные, например, 5.02
комплексные
Строка – это последовательность символов. Чаще всего строки – это просто некоторые наборы слов. Слова могут быть как на английском языке, так и почти на любом языке мира.
string[i] извлекает символ в позиции i
string[-1] извлекает последний символ
string[i:j] извлекает символы в диапазоне от i до j
string.upper() преобразует строку в верхний регистр
String.lower() преобразует в строку в нижний регистр
string.count(x) подсчитывает, сколько раз появляется x
string.find(x) позиция первой строки вхождения x
string.replace(x, y) заменяет x на y
string.strip(x) удаляет как начальные, так и конечные символы x
string.join (List) объединяет список строк
string.format(x) возвращает строку, которая включает отформатированное представление x
Одинарные кавычки
Строку можно указать, используя одинарные кавычки, как например, 'Это строка'. Любой одиночный символ в кавычках, например, 'ю' — это строка. Пустая строка '' — это тоже строка. То есть строкой мы считаем всё, что находится внутри кавычек.
Двойные кавычки
Запись строки в одинарных кавычках это не единственный способ. Можно использовать и двойные кавычки, как например, ''Это строка''. Для интерпретатора разницы между записями строки в одинарных и двойных кавычках нет.
Внимание:
Если строка началась с двойной кавычки — значит и закончиться должна на двойной кавычке.
Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных кавычках.
Театр ''Современник''
print('Театр ''Современник''')
Тройные кавычки
Строка, занимающая несколько строк, должна быть обрамлена тройными кавычками ('' '' '' или '''). Например:
'''В Python можно использовать одинарные,
двойные и тройные кавычки,
чтобы обозначить строку'''
Сдвиг строки с помощью пробелов называется отступами.
Для выделения блоков программного кода используются отступы.
В одном и том же блоке кода должно быть одинаковое количество пробелов.
Количество пробелов в отступах произвольно. Общепринято использовать четыре пробела.
Переменная – это именованная область памяти, в которой хранятся данные. Данные помещаются в эту область памяти, как в ящик, с помощью оператора присваивания. Общая форма записи операции присваивания:
имя = значение
Знакомый нам знак равно (=) в программирование это знак операции присваивания. Различие между знаками равно и присваивания в следующем.
Например:
b = 4
b = b + 2 # переменная будет иметь значение 6
В обычной математической записи выражение b (рано) = b + 2 является не верным. Однако запись оператора присваивания b (присвоить) = b + 2 правильная и означает следующее: к текущему значению переменной b, например, оно было равно 4, прибавляется число 2 , и после выполнения данного оператора, значение переменной будет равно 6.
Оператор |
Краткое описание |
+ |
Сложение (сумма x и y) |
- |
Вычитание (разность x и y) |
* |
Умножение (произведение x и y) |
/ |
Деление Внимание! Если x и y целые, то результат всегда будет целым числом! Для получения вещественного результата хотя бы одно из чисел должно быть вещественным. Пример: 40/5 → 8, а вот 40/5.0 → 8.0 |
= |
Присвоение |
+= |
y+=x; эквивалентно y = y + x; |
-= |
y-=x; эквивалентно y = y - x; |
*= |
y*=x; эквивалентно y = y * x; |
/= |
y/=x; эквивалентно y = y / x; |
%= |
y%=x; эквивалентно y = y % x; |
== |
Равно |
!= |
не равно |
> |
Больше |
< |
Меньше |
>= |
больше или равно |
<= |
меньше или равно |
|
|
% |
Деление по модулю - деление, в котором возвращается остаток. 4 % 2 в результате будет 0 |
// |
Целочисленное деление - деление, в котором возвращается целая часть результата. Часть после запятой отбрасывается 4 // 3 в результате будет 1 |
** |
Возведение в степень 5 ** 2 в результате будет 25 |
and |
логическое И |
or |
логическое ИЛИ |
not |
логическое отрицание НЕ |
Имя |
Тип |
Описание |
Целые числа |
int |
1, 2, 3 |
Веществекнные числа |
float |
1.1, 2.1, 5.03 |
Строки |
str |
Последовательность символов: "abc", "pyhton", "123" |
Списки |
list |
Последовательность объектов: [1, 2.0, "Привет!"] |
Словари |
dist |
Список пар «ключ – значение» {"пять":5 } |
Кортежи |
tuple |
Последовательность неизменных объектов:(20,25 ) |
Множества |
set |
Последовательность уникальных объектов:{4,5,6,} |
Булевы значения |
bool |
Логические значения: True или False |
Список (list) представляет тип данных, который хранит набор или последовательность элементов.
Для создания списка в квадратных скобках [ ] через запятую перечисляются все его элементы.
Создание пустого списка
numbers = []
Создание списка чисел:
numbers = [1, 2, 3, 4, 5] # имя списка numbers, он содержит 5 элементов
Создание списка слов:
words = ["C", "C++", "Java", "Python"] # имя списка words, он содержит 4 элемента
Создание списка из элементов разного типа
listNum = [1,2,3,4, "один", "два", "три", "четыре"] # имя списка listNum, список содержит целые числа и строки
Для управления элементами списки имеют целый ряд методов. Некоторые из них:
append(item): добавляет элемент item в конец списка
insert(index, item): добавляет элемент item в список по индексу index
remove(item): удаляет элемент item. Удаляется только первое вхождение элемента. Если элемент не найден, генерирует исключение ValueError
clear(): удаление всех элементов из списка
index(item): возвращает индекс элемента item. Если элемент не найден, генерирует исключение ValueError
pop([index]): удаляет и возвращает элемент по индексу index. Если индекс не передан, то просто удаляет последний элемент.
count(item): возвращает количество вхождений элемента item в список
sort([key]): сортирует элементы. По умолчанию сортирует по возрастанию. Но с помощью параметра key мы можем передать функцию сортировки.
reverse(): расставляет все элементы в списке в обратном порядке
Кроме того, Python предоставляет ряд встроенных функций для работы со списками:
len(list): возвращает длину списка
sorted(list, [key]): возвращает отсортированный список
min(list): возвращает наименьший элемент списка
max(list): возвращает наибольший элемент списка
Для создания списков, заполненных по более сложным формулам можно использовать генераторы: выражения, позволяющие заполнить список значениями, вычисленными по некоторым формулам.
[выражение for переменная in последовательность]
Пример. Создать список чисел от 0 до 10
Записываем генератор
[i for i in range(0, 10)]
Вся конструкция заключается в квадратные скобки, потому что будет создан список. Внутри квадратных скобок можно выделить три части:
1) что делаем с элементом i: просто добавляем значение i в список
2) что берем: берем i
3) откуда берем: из объекта range.
Части отделены друг от друга ключевыми словамиfor и in.
list_of_numbers = [] #создаем пустой список
list_of_numbers = [i for i in range(0, 10)]
print(list_of_numbers)Результат работы программы
Пример. Создать список заглавных букв английского алфавита.Код символа 'A' – 65, код символа 'Z' – 91. Поскольку символы идут подряд, то возможно использовать генератор.
что делаем: к значению элемента i применяем функцию chr(i).
Внимание.Функция chr(i) – по числовому коду символа возвращает сам символ. Пример. chr(65) даст символ 'A'.
list_of_char = [] #создаем пустой список
list_of_char = [chr(i) for i in range(65, 91)]
print(list_of_char)Результат работы программы
Пример. Создать список строчный букв английского алфавита.Код символа 'a' – 97, код символа 'z' – 123. Поскольку символы идут подряд, то возможно использовать генератор.
list_of_char = [] #создаем пустой список
list_of_char = [chr(i) for i in range(97, 123)]
print(list_of_char)Результат работы программы
Для проведения вычислений с действительными числами язык Python содержит много дополнительных функций, собранных в библиотеку, которая называется math. Для использования этих функций в начале программы необходимо подключить библиотеку, что делается командой
import math # подключение модуля библиотеки
После подключения программа получает доступ ко всем функциям, методам и классам, содержащимся в нём. После подключения можно вызвать любую функцию из подключенной библиотеки по следующему правилу: указывается имя модуля и через точку имя функции
имя_модуля.имя_функции
Например, пусть мы хотим вызвать функцию вычисления Синус угла, задаваемого в радианах
import math
y = sin(5) # ошибка не подключен модуль math
x = math.sin(5) # записываем имя модуля и через точку имя функции
Можно подключать не весь модуль, а какую-то его часть. Например, программист хочет использовать только одну функцию из математической библиотеки math. Если он подключит всю библиотеку, то будет добавлено более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from:
from <имя подключаемого модуля> import <название функции>
Например.
from math import sin # подключена только одна функция sin
y = sin(5) # операция выполнена
x = cos(5) # ошибка функция cos не подключена
Ниже приведен список основных функций модуля math. Некоторые из перечисленных функций (int, round, abs) являются стандартными и не требуют подключения модуля math для использования.
Функция |
Описание |
Округление |
|
int(x) |
Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math. |
round(x) |
Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа. |
round(x, n) |
Округляет число x до n знаков после точки. Это стандартная функция, для ее использования не нужно подключать модуль math. |
floor(x) |
Округляет число вниз («пол»), при этом floor(1.5) == 1, floor(-1.5) == -2 |
ceil(x) |
Округляет число вверх («потолок»), при этом ceil(1.5) == 2, ceil(-1.5) == -1 |
abs(x) |
Модуль (абсолютная величина). Это — стандартная функция. |
Корни, логарифмы |
|
sqrt(x) |
Квадратный корень. Использование: sqrt(x) |
log(x) |
Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b. |
e |
Основание натуральных логарифмов e = 2,71828... |
Тригонометрия |
|
sin(x) |
Синус угла, задаваемого в радианах |
cos(x) |
Косинус угла, задаваемого в радианах |
tan(x) |
Тангенс угла, задаваемого в радианах |
asin(x) |
Арксинус, возвращает значение в радианах |
acos(x) |
Арккосинус, возвращает значение в радианах |
atan(x) |
Арктангенс, возвращает значение в радианах |
atan2(y, x) |
Полярный угол (в радианах) точки с координатами (x, y). |
degrees(x) |
Преобразует угол, заданный в радианах, в градусы. |
radians(x) |
Преобразует угол, заданный в градусах, в радианы. |
pi |
Константа π = 3.1415... |
Python порождает случайные числа на основе формулы, так что они на самом деле не случайные, а, как говорят, псевдослучайные.
Модуль random позволяет генерировать случайные числа и имеет большое множество важных для практики функций. Рассмотрим основные функции:
random.random() - случайное число от 0 до 1.
random.randint(A, B) - случайное целое число N, A ≤ N ≤ B.
random.shuffle(list) перемешивает список случайным образом
random.choice(list) возвращает один случайный элемент из списка
Функция random.random()случайное число от 0 до 1.
import random
number = random.random() # значение от 0.0 до 1.0
print(number)
number = random.random() * 100 # значение от 0.0 до 100.0
print(number)
Функция random.randint(A, B) - случайное целое число N, A ≤ N ≤ B
import random
number = random.randint(20, 35) # значение от 20 до 35
print(number)
функция random.shuffle(list) перемешивает список случайным образом
import random
numbers = [1, 2, 3, 4, 5, 6, 7, 8] # список
random.shuffle(numbers)
print('numbers shuffle:',numbers)
Результат работы программы:
numbers shuffle: [6, 8, 1, 4, 7, 5, 2, 3]
функция random.choice(list) возвращает один случайный элемент из списка
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
random_number = random.choice(numbers)
print('random_number:', random_number)
random_number: 4
Функция |
Описание |
int(x) |
Преобразовывает х в целое число. |
float(x) |
Преобразовывает х в число с плавающей точкой. |
str(x) |
Преобразовывает х в строку. |
print (x, sep = 'y') печатает x объектов, разделенных y
len (x) возвращает длину x (s, L или D)
min (L ) возвращает минимальное значение в L
max (L) возвращает максимальное значение в L
sum (L) возвращает сумму значений в диапазоне L
range(n1,n2,n) (n1, n2, n) возвращает последовательность чисел от n1 до n2 с шагом n
abs (n) возвращает абсолютное значение n
round (n1, n) возвращает число n1, округленное до n цифр
type (x) возвращает тип x (string, float, list, dict…)
str (x) преобразует x в string
list (x) преобразует x в список
int (x) преобразует x в целое число
float (x) преобразует x в число с плавающей запятой
help (s) печатает справку о x
map (function, L) Применяет функцию к значениям в L
Принятые обозначения: x, y обозначают любые значения данных, s - строку, n - число, L - список, где i, j - индексы списка, D - словарь, а k - ключ словаря
f = open(<path>,‘r')
f.read(<size>)
f.readline(<size>)
f.close()
f = open(<path>,’r’)
for line in f:
<code>
f.close()
f = open(<path>,'w')
f.write(<str>)
f.close()
while <condition>:
<code>
for <variable> in <list>:
<code>
for <variable> in range(start,stop,step):
<code>
for key, value in dict.items():
<code>
Операторы управления циклом
break завершает выполнение цикла
continue переходит к следующей итерации
pass ничего не делает
Оператор if позволяет изменить порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Формат оператора может быть записан в двух формах: полной и неполной форме.
if условие:
# блок if
<операторы>
else:
# блок else
<операторы>
Блок инструкций if будет выполнен, если условие истинно. Если условие ложно, будет выполнен блок инструкций else.
В условном операторе может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением.
Пример 5. Записать следующее выражение на языке Python.
Если a > 0, то b = 1, иначе a = 0.
print ("Введите значение a: ")
a = int(input())
if a > 0:
b = 1
else:
b = 0
print("b = ", b)
if условие_1:
# блок if
<операторы>
elif условие_2:
# первый блок elif
<операторы>
elif условие_3:
<операторы>
...
else
# блок else
<операторы>
Ключевое слово elif расшифровывается, как else + if. Это конструкция позволяет реализовать алгоритм выбора необходимого варианта из нескольких альтернативных вариантов. Оператор elif позволяет упростить код. Сделать его легче читаемым и позволяет избежать написание несколько условий if.
Когда исполняется инструкция if-elif-else, в первую очередь проверяется условие_1. Если условие истинно, тогда исполняется блок инструкций if . Следующие условия и операторы пропускаются, и управление переходит к оператору за условным оператором if-elif-else.
Если условие_1 оказывается ложным, тогда управление переходит к следующему условию elif, и проверяется условие_2. Если оно истинно, тогда исполняются инструкции внутри первого блока elif. Последующие инструкции внутри этого блока пропускаются. Этот процесс повторяется, пока не находится условие elif, которое оказывается истинным. Если такого нет, тогда исполняется блок операторов else
Пример.
x = int(input())
y = int(input())
if x > 0 and y > 0:
print("Первая четверть")
elif x > 0 and y < 0:
print("Четвертая четверть")
elif y > 0:
print("Вторая четверть")
else:
print("Третья четверть")
Определение функции начинается с выражения def, которое состоит из имени функции, набора скобок с параметрами и двоеточия. Параметры в скобках необязательны.
def function(<параметры>):
<code>
return <данные>
Пример.
def max(a, b):
if a > b:
return a
else:
return b
Выражение return прекращает выполнение функции и возвращает заданное значение (называется возвращаемое значение). Ключевое слово не обязательно.
Основные правила:
Пример. Используем ключевые слова name (имя), age (возраст) для функции person():
# Определение функции
def person( name, age ):
print("Name: " + name + " age: " + str(age))
# Вызов функции person
person( age = 24, name = "Никита" )
person( name = "Мария", age = 22 )
Результат:
Name: Никита age: 24
Name: Мария age: 22
dict = {} определяет пустой словарь
dict[k] = x сохраняет x, связанный с ключом k
dict[k] извлекает элемент с ключом k
del dict[k] удаляет элемент с ключом k
dict.keys() возвращает список ключей
dict.values() возвращает список значений
dict.items() возвращает список пар (ключ, значение)
dict.get(k) возвращает значение, связанное с ключом k
dict.pop() удаляет элемент, связанный с ключом, и возвращает его значение
dict.update(D) добавляет значения ключей (D) в словарь
dict.clear() удаляет все значения ключей из словаря
dict.copy() возвращает копию словаря
Исключения - это ошибки, которые приводят к сбою программ. Они часто происходят из-за плохого ввода или ошибок программирования. Наша задача-предвидеть и обрабатывать эти исключения, чтобы предотвратить сбои в наших программах.
try:
<code>
except <error>:
<code>
else:
<code>
Множество — это совокупность неповторяющихся элементов, расположенных в случайном порядке. При этом они могут быть как числовыми, так и символьными.
items = set()
items.add("Яблоко")
items.add("Апельсин")
items.add(1)
items.add("Машина")
items.remove("Машина")
Объектно-ориентированное программирование (ООП) – технология разработки сложного программного обеспечения, в которой программа строится в виде совокупности объектов и их взаимосвязей.
Объединение данных и действий, производимых над этими данными, в единое целое, которое называется объектом – является одним из основных принципов ООП.
Основными понятиями являются понятие класса и объекта.
Класс является типом данных, определяемым пользователем и представляет собой структуру в виде данных и методов для работы с данными.
Формально Класс — это шаблон, по которому будет сделан объект.
Объект является экземпляром класса. Объект и экземпляр - это одно и то же.
Вот пример. Форма для изготовления печенья – это класс, а само печенье это объект или экземпляр класса, т.е. это конкретное изделие. Печенье имеет размеры, цвет, состав – это атрибуты класса. Также в классе описываются методы, которые предназначены для чтения или изменения данных объекта.
В Python характеристики объекта, называются атрибутами, а действия, которые мы можем проделывать с объектами, — методами. Методами в Python называют функции, которые определяются внутри класса.
Объект = атрибуты + методы
Рассотрим пример. Пусть у нас есть объект мяч - ball , обладающий атрибутами и методами.
Атрибуты мяча могут быть:
ball.color - цвет, например, красный
ball.size - размер, например, маленький
ball.price – стоимость мяча
Методы нашего объекта могут выглядеть следующим образом:
ball.Move( ) - перемещение мяча
ball.Show( ) – вывести характеристики (атрибуты) мяча на экран
Переменная self указывает на конкретный объект экземпляра класса. Доступ к атрибутам и методам осуществляется через переменную self. Это главное назначение переменной self.
Предположим мы создали три мяча - экземпляры класса Ball: ball1, ball2, ball3. Мячи могут иметь разные характеристики, например, как в таблице.
Объект |
Self |
Color |
Size |
Price |
|
имя объекта |
адрес объекта |
||||
ball1 |
адрес 1 |
адрес 1 |
Красный |
Маленький |
10 |
ball2 |
адрес 2 |
адрес 2 |
Синий |
Средний |
20 |
ball3 |
адрес 3 |
адрес 3 |
Белый |
Большой |
30 |
Переменная self представляет ссылку на экземпляр класса, т.е. содержит адрес объекта. Всем методам класса автоматически передается эта ссылка.
Предположим в классе Ball имеется метод Show( ) – вывести характеристики мяча.
При создании трех мячей – трех экземпляров класса Ball, каждый мяч имеет свои значения атрибутов – свои характеристики, а вот метод Show( ) будет только в единственном экземпляре - один для всех трех мячей. Спрашивается как метод Show() может определить характеристики какого мяча выводить на экран? На помощь приходит переменная self, которая знает адрес каждого из трех экземпляров класса. Метод получает доступ к атрибутам требуемого объекта с помощью переменной self. Как это делается рассмотрим несколько позже.
В приведенных примерах между именем объекта и именем атрибута или метода стоит точка. Это обозначение, которое применяется, когда нужно обратиться к атрибутам или методами объекта
объект.атрибут, например, так можно изменить цвет мяча ball.color = «зеленый»
объект.метод() например, так можно переместить мяч ball. Move( )
Определение класса начинается с ключевого слова class, после него следует имя класса и двоеточие.
class имя_класса:
# тело класса
# объявление конструктора
# объявление атрибутов
# объявление методов
Основные определения
Метод __init__ или Конструктор
В процессе создания объекта атрибутам класса необходимо задать начальные значения. Это действие называется инициализацией. Для этой цели используется специальный метод __init__(), который называется методом инициализации или конструктором. Метод __init__ запускается при создании экземпляра класса - один раз. Обратите внимание на двойные подчёркивания в начале и в конце имени.
Синтаксис метода следующий:
def __init__(self, параметр1, параметр2):
self.атрибут1 = параметр1
self.атрибут2 = параметр2
Два символа подчеркивания в начале __init__ и два символа подчеркивания в конце обязательны. Параметров у конструктора параметр1, параметр2 может быть сколько угодно, но первым дожен быть параметр self.
Атрибуты класса
Характеристики объекта, называются атрибутами и записываются в внутри конструктора с помощью переменной self. Доступ к атрибутам осуществляется через переменную self.
Например, класс имеет атрибут цвет – color, он должен быть записан как
self.color
Методы класса
Методы класса создаются посредством ключевого слова def , имени метода , слова self, которое всегда указывается как первый параметр метода
def имя метода(self, передаваемые параметры):
# тело метода
Пример. Создаем метод, который выводит на печать характеристики мяча
def Show(self):
print("Мяч: ", self.color, self.size )
Мы определили атрибуты класса и методы. Таким образом, класс для нашего мяча будет выглядеть так:
class Ball:
def __init__(self, color, size):
self.color = color
self.size = size
def Show(self):
print("Мяч: ", self.color, self.size )
Для создания объекта — экземпляра класса достаточно вызвать класс по имени и задать параметры конструктора. Пример. Предположим у нас есть конструктор
def __init__(self, color, size):
Подставляем на место формальных параметров, которые указаны в конструкторе
def __init__(self, color, size) фактические, например, для параметра color указываем "красный,", а для size задаем зачение "маленький".
Создание экземпларя будет выглядеть следующим образом.
ball = Ball("красный,","маленький")
Переменная self автоматически примет значение ссылки при создании экземпляра класса.Обратиться к методу Show() можно так:
ball.Show()
Будет выведено:
Мяч: красный, маленький