Python
TWIdeas:
I wanna create my the first book about programming for myself. Уникальный номер книги вписываешь на сайт проходишь тест получаешь сертификат
Основы Python
Код это инструкции
# комментарий
‘’’ облачный комментарий ‘’’
Переменные предназначены для хранения данных
\: позволяет добавить внутрь строки слеш
\': позволяет добавить внутрь строки одинарную кавычку
\": позволяет добавить внутрь строки двойную кавычку
\n: осуществляет переход на новую строку
\t: добавляет табуляцию (4 отступа)
Математика: +, -, *, /, //, **, %,
Ставь отступы кратные 4
Отступы позволяют отнести код к какой либо конструкции
print Print PRINT - разные значения
Функции
print - выводит информацию на консоль
print(“hello”)
input - принимает любые написанные значения
round() - первое число — округление, второе число — знаки после запятой
print(round(2.49)) # 2
print(round(2.51)) # 3
Округление происходит к ближайшему четному
print(round(2.5)) # 2
print(round(3.5)) # 4
Типы данных
Bool - true/false
Int - целые числа 1, 10, 100
Float - дробь 1.10, 10.100
Complex - комплексные числа
Str - строки
Перевод типов данных:
Hello = Hi
Word = 1488
print(Hello + World) # error
print(Hello + str(World)) # Hi 1488
print(Hello, World) # Hi 1488
Ключевые слова
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
Неприятные ситуации
path = "C:\python\name.txt"
print(path)
# C:\python
ame.txt
Чтобы избежать:
path = r"C:\python\name.txt"
print(path)
Как вставить значения в строку: f"{}"
userName = "Tom"
userAge = 37
user = f"name: {userName} age: {userAge}"
print(user) # name: Tom age: 37
Советы
Играй в кодигры
Lifehuck
Быстрое комментирование несколько строк: Ctrl /
Математические функции
min(1, 2) - находит минимальный элемент
max(1, 2) - максимальный
pow(5, 3) - возводит в степень
abs(-5) - находит число по модулю
round(5 / 3) - округление
Параметры:
End — про многократном вызове print каждое значение переходит на новую строчку end позволяет все разместить в одной строке
Где это может пригодиться?
print("Hello World", end=" ")
print("Hello Python")
# Hello World Hello Hello Python
Директива:
del — удаляет
Сравнение
==
True, если оба операнда равны. Иначе False.
!=
True, если оба операнда НЕ равны. Иначе False.
> (больше чем)
True, если первый операнд больше второго.
< (меньше чем)
True, если первый операнд меньше второго.
>= (больше или равно)
True, если первый операнд больше или равен второму.
<= (меньше или равно)
True, если первый операнд меньше или равен второму.
if (not) — проверка условия, если верно или нет то…
/
If test and test1 — если два условия будут корректны то…
/
If test or test1 — если одно из них верно то…
elif — между if и else, Дополнительное условие.
else — записывается в самом конце
«раз ничего не подошло значит это»
in — True
если в наборе значений есть определенное значение.
Строка это символы. С помощью in
мы можем проверить, есть ли в ней какая-нибудь подстрока:
message = "hello world!"
hello = "hello"
print(hello in message) # True - подстрока hello есть в строке "hello world!"
in not:
gold = "gold"
print(gold not in message) # True
Тернарный оператор:
Короткий способ условия
test = input()
number = 1488 if test == “hi” else 0
(Y) hi
(O) 1488
Двоичное число 0, 1
0 = 0 в двоичной и десятичной
1 = 1 в двоичной и десятичной
Десятичное число 2 = 10 в двоичное системе
1 + 1 = 10 в двоичной системе
fx:
Для десятичного числа в двоичной системе можно применять спецификатор 0b
number = 5 # в двоичной 101
print(f"number = {number:0b}") # number = 101
Циклы — код который можно выполнять несколько раз
For — for переменная in переменная
While — пока условие верное цикл будет работать
For i in range(6):
print(i)
O 0 1 2 3 4 5
For i in range(1, 6):
print(i)
On1 2 3 4 5
For i in range(1, 6, 2):
print(i)
O 1 3 5
(Первый параметр начало
Второй — до скольки
Третий — шаг)
/
i = 5
while i < 15:
print(i)
i += 2 #добавляем число 2
O 5 7 9 12 13
Операторы:
Break — выходит из цикла
Работает:
for i in range(1,11):
If i == 5
break
print(i)
O 1 2 3 4 5
Continue— пропускает итерацию
Работает:
for i in range(1,11):
If i == 5
break
If 1%2 ==0:
continue
print(i)
O 1 2 3 4 5
Difference between variables and lists в количестве value
variable = [1, True, “hello”]
(edit data):
variable[0] = 2
print(variable)
O [2, True, “hello”]
(вывести что-то определённое):
print(variable[1])
O [True]
(список в списке):
variable = [1, True, “hello”, [2, 3]]
print(variable[3]
O [2, 3]
(add new data):
variable.append(4)
print(variable)
O [1, True, “hello”, 4]
(functions)
append — добавляет в конец списка
insert(1, true) — значение по индексу
extend([5, 6, 7]) — добавляет набор
sort — упорядочивает список
reverse — переверчивает порядок
pop — удаляет последний элемент
remove(true) — удаление значений
clear — удаляет весь список
count(1) — считает элементы
len(variable) — считает длину списка
Function — code block
В скобках указывается параметры
def variable():
print('hello')
variable()
O hello
/
def variable(a, b):
res = a + b
print(“Result”, res)
variable(1, 1)
variable(“H”, “i”)
O 2
O Hi
Local function — функция внутри функции
Параметры функции
def variable(name):
print(f'hello, {name}')
variable('Tommy')
variable('Julia')
Значения по умолчанию
def variable(name="Tom"):
print(f"Hello, {name}")
variable() # name будет иметь значение "Tom"
variable("Julia")
Именованные параметры
def variable(name, age):
print(f"Name: {name} Age: {age}")
variable(age = 22, name = "Tom")
Return — определяется в конце функции
def variable(a, b):
return a + b
result = sum(4, 6)
Tuple — списки которые нельзя видоизменять весят меньше (?, )
Ни добавить ни убавить
Обращение к элементу через []
Преобразование к кортежу:
tuple(variable)
lambda — анонимная функция. Позволяет сократить код. Выполняет одну инструкцию.
f.x.
sum = lambda a, b: a + b
print(sum(4, 5))
print(sum(5, 6))
Глобальный — определена вне функций. Доступна любой функции.
Локальный — определяется внутри функции.
Если нужно изменить в локальной функции глобальную переменную, а не определить локальную, то используй global:
global variable
Замыкание — функция запоминает свое лексическое окружение (???)
Словарь — ключ для определённого значения {}
fx:
variable = {something: 10}
print(variable[something])
O 10
(Это уже было)
f-строки, сокращение от форматированных строк, позволяют нам отображать такие выражения, как добавление строки к числу, без каких-либо ошибок.
print(f’{2} new message’)
Множества — список в которым не может быть повторяющихся элементов.
Set
variable = set(‘something’)
print(variable)
O {'m', 'e', 't', 'o', 's', 'i', 'n', 'h', 'g'}
Frozenset — кортеж + множества
variable = frozenset([‘something’])
print(variable)
O {'m', 'e', 't', 'o', 's', 'i', 'n', 'h', 'g'}
Объектно-ориентированное программирование (DIFFICULT)
Человек может думать бегать набор характеристик который можно назвать классом.
class Person:
pass
# 2 объекта:
Tom = Person()
Julia = Person()
Метод класса — набор функций в классе. Параметр в скобках метода.
class Person:
def say_hello(self):
print("Hello")
Tom = Person()
Tom.say_hello()
O Hello
# self — ссылка на текущий объект
class Person:
def say(self, message):
print(message)
Tom = Person()
Tom.say(“Hello”)
O Hello
Конструкторы — для создания объекта __init__()
Инкапсуляция, атрибуты и свойства (DIFFICULT)
pass — keyword ничего
Return — вернуть что-то из функции (для дальнейшей работы с ней) можно записать функцию в виде переменной
def variable(a, b):
res = a + b
return rec
res = variable(1, 1)
print(res)
O 2
/
def variable(a, b):
return a + b
print(variable(1, 1))
Работа с файлами за счет Python
Важно для начала открыть и не забыть закрыть файл.
Функция open
1 параметр — название что открываем
2 — способ открытия
variable = open('file.txt', 'w')
variable.write('Hello')
variable.close()
/
user = input('Enter something in the file: ')
variable = open('file.txt', 'w')
variable.write(user)
variable.close()
/
variable = open('file.txt', 'r')
print(variable.read())
variable.close()
Способы открытия file
write — (пере)записать файл автоматически создаёт файл
append — добавляет информацию
read — открыть для чтения
Наследование — создаёт новый класс на основе существующего
Подкласс — ребёнок наследует все публичные атрибуты и методы.
Суперкласс — родитель
f.x.
class подкласс (суперкласс):
методы_подкласса
Множественное наследование:
class Employee + class Student = class WorkingStudent(Employee, Student)
Переопределение функционала базового класса
Обработчик исключений — нужен чтобы пользователь мог продолжить работать с программой после ошибки
2 типа ошибок:
syntax error
runtime error — строка в число
variable = 0
while variable == 0
try:
variable = int(input("Enter num"))
variable += 5
print(variable)
#отслеживает ошибку
except ValueError:
print("you entered word, you have to enter number")
Передать искл в переменную с помощью as:
except ValueError as variable
print("You made a mistake: ", variable)
Атрибуты классов и статические методы
Строковое представление объекта
«With ... as» — для работы с files на языке Python
Модули — набор файлов подключаемый к проекту.
f.x.
# импортируем модуль. Через точку открывается весь доступ
Import time
time.sleep(3)
print("Hello")
O #через 3сек. Hello
/
# в переменную через as
Import time as t
t.sleep(3)
print("Hello")
/
# импортировать что-то конкретное из модуля
from math import sqrt
/
# создаем свой модуль
Новый файл: mymodule
name = "Tommy"
def hello():
print("Hello ", name")
# в новом файле импортируем
import mymodule as my
print(my.name)
my.hello()
O Tommy
O Hello Tommy
Найти все встроенные функции
Генерация исключений и создание своих типов исключений
range — неизменяемый набор числе
range(start/stop/start,stop,step)
1) возвращает числа от 0 до stop
Range(5) — 0 1 2 3 4 5
2) возвращает числа от start до stop
Range(1,5) 1 2 3 4
3) возвращает числа от start до stop которые увеличиваются на step
Range(2,10,2) 2,4,6,8
Основы ООП — class чертёж робота, начинка. Объект — сам робот со значениями и данными. Наследование — добавление полезных опций к чертежу. Полиморфизм — общий функционал, что можно переписать для определённой модели робота. Инкапсуляция — защита внутренних данных. Поле == переменная. Метод == функция
class Robot:
model = None
age = None
robot1 = Robot()
robot1.model = "TW1488"
robot1.age = 20
robot2 = Robot()
robot2.model = "JW1802"
robot2.age = 18
print(robot1.model)
print(robot2.model)
/
class Robot:
model = None
age = None
def set_data(self, model, age):
self.model = model
self.age = age
def get_data(self):
print("Model: ", self.name, "Age: ", self.age)
robot1 = Robot()
robot1.set_data("TW1488", 21)
robot2= Robot()
robot2.set_data("JW1802", 18)
robot1.get_data()
robot2.get_data()
Конструкторы, переопределение методов
__init__(self): — создание конструктора для передачи его в параметры.
Модули — файл с кодом который можно повторно использовать. Расширение .py.
Наследование, инкапсуляция, полиморфизм
class Building:
year = None
city = None
def __init__(self, year, city):
self.year = year
self.city = city
def get_info(self):
print("Year: ", self.year, "City: “, self.city)
school = Building(1999, "Berlin")
Модуль locale — для разных стран
Модуль decimal — округление
\ добавить слеш
\' добавить одинарную кавычку
\" добавить двойную кавычку
\n переход на новую строку
\t добавляет табуляцию
Pattern matching — сопоставление выражения с шаблоном, похожа на if/else/elif. Позволяет: извлечь данные, применять действия к объектам.
match выражение:
case шаблон_1:
действие_1
case шаблон_2:
действие_2
def print_hello(language):
match language:
case "english":
print("Hello")
case "german":
print("Hallo")
print_hello("english")
print_hello("german")
/
при несовпадении значений применяется шаблон _ (прочерк):
case _:
print("Undefined")
/
также можно определить блок case, который позволяет сравнивать сразу с несколькими знечениями.
case "american english" | "british english" | "english":
print("Hello")
/
def operation(a, b, code):
match code:
case 1:
return a + b
case 2:
return a - b
case 3:
return a * b
case _:
return 0
print(operation(10, 5, 1)) # 15
print(operation(10, 5, 2)) # 5
print(operation(10, 5, 3)) # 50
print(operation(10, 5, 4)) # 0
/
Альтернативные значения
/
можно перечислить через вертикальную черту:
case ("Tom" | "Tomas" | "Tommy", 37):
print("default user")
/
Пропуск элементов -- указать шаблон _
/
case (name, _): # второй элемент не важен
print(f"Name: {name}")
/
Кортеж с неопределенным количеством элементов
/
def print_data(user):
match user:
case ("Tom", 37, *rest):
print(f"Rest: {rest}")
case (name, age, *rest):
print(f"{name} ({age}): {rest}")
print_data(("Tom", 37)) # Rest: []
print_data(("Tom", 37, "Google")) # Rest: ["Google"]
print_data(("Bob", 41, "Microsoft", "english")) # Bob (41): ["Microsoft", "english"]
Выше применяется параметр *rest, который соответствует всем остальным элементам. Все элементы начиная с третьего будут помещаться в параметр rest, который представляет массив значений.