5.99M
Категория: ПрограммированиеПрограммирование

Кадры для цифровой промышленности. Создание законченных проектно-конструкторских решений

1.

Всероссийский конкурс
«КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ. СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНОКОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
ГК «Геоскан»
Модуль: ВВЕДЕНИЕ В ДЕЯТЕЛЬНОСТЬ
«ЭКСПЛУАТАЦИЯ БЕСПИЛОТНЫХ АВИАЦИОННЫХ СИСТЕМ»
Название темы: Введение в Python
Преподаватель: Божко Петр Анатольевич, программист
Москва, 2022

2.

Изучаемые вопросы
1.
2.
3.
4.
5.
6.
7.
Переменные
Типы данных
Операторы ветвления
Циклы
Функции
Потоки
Отладка
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
2

3.

Цель занятия
• Получение знаний языка Python
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
3

4.

Формируемые компетенции
(результат освоения)
• Методы обучения: лекция
• Технические средства обучения: компьютер
• Программное обеспечение: Microsoft Windows 10,
PyCharm Community, Python
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
4

5.

Python
Высокоуровневый язык программирования
общего назначения имеющий:
• динамическую строгую типизацию
• автоматическое управление памятью
Создан для:
• высокой производительности
разработчика
• читаемости кода и его качества
• обеспечение переносимости написанных
на нём программ
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
5

6.

Введение
• Программа на языке Python состоит из набора
инструкций. Каждая инструкция помещается на
новую строку.
print(2 + 3)
print(“Hello”)
• Большую роль в Python играют отступы.
Неправильно поставленный отступ фактически
является ошибкой.
print(2 + 3)
print(“Hello”)
• Python - регистрозависимый язык, поэтому
выражения print, Print или PRINT представляют
разные выражения.
• В коде можно оставлять комментарии. При
трансляции и выполнении программы
интерпретатор игнорирует комментарии, поэтому
они не оказывают никакого влияния на работу
программы. Комментарии в Python бывают
блочные и строчные.
Print(“Hello World”)
# Вывод на консоль
# сообщения Hello World
print(“Hello World”)
print(“Hello”) # Вывод
‘’’
Вывод на консоль
сообщения Hello World
‘’’
print(“Hello World”)
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
6

7.

Переменные
• Переменные предназначены для хранения данных
• Название переменной в Python должно начинаться с
алфавитного символа или со знака подчеркивания и может
содержать алфавитно-цифровые символы и знак
подчеркивания. И кроме того, название переменной не
должно совпадать с названием ключевых слов языка Python.
a = 10
name = “Tom”
second_name = “Jerry”
isCat = True
• Объявление переменной типа int в python: a = 10.
• Можно заметить, что в python тип переменной не указан, но
тем не менее переменная все равно является int`ом. В python
динамическая типизация и тип каждой переменной
определяется автоматически.
• Определив переменную, мы можем использовать её в
программе. Например, вывести её содержимое в консоль с
помощью встроенной функции print()
• Отличительной особенностью переменной является то, что
мы можем менять ее значение в течение работы программы
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
a = 10 # int
print(a) # 10
a = 10
print(a) # 10
a = 15
print(a) # 15
7

8.

Типы данных
• Переменная хранит данные одного из типов данных.
• В Python существует множество различных типов данных. В
данном случае рассмотрим базовые типы: bool, int, float и str,
а также встроенный тип list (список).
• Логические значения bool - представляет два логических
значения: True (верно, истина) или False (неверно, ложь)
isAlive = True
print(isAlive)
# True
• Целые числа int - представляет целое число, например, 1, 4.
По умолчанию стандартные числа расцениваются как числа в
десятичной системе. Но Python также поддерживает числа в
двоичной 0b0011, восьмеричной 0o453 и шестнадцатеричной
системах 0xFAC.
c = 15
print(“C:”, c)
# C: 15
• Дробные числа float - представляет число с плавающей
точкой, например, 1.2 или 34.76. В качесте разделителя целой
и дробной частей используется точка.
pi = 3.14
weight = 68.
print(pi)
print(weight)
# 3.14
# 68.0
• Строки str - представляет строки. Строка представляет
последовательность символов, заключенную в одинарные
или двойные кавычки, например "hello" и 'hello'. В Python 3.x
строки представляют набор символов в кодировке Unicode.
message = “Hello!”
print(message) # Hello!
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
8

9.

Типы данных
• Python является языком с
динамической типизацией. А
это значит, что переменная не
привязана жестко с
определенному типу.
• Тип переменной определяется
исходя из значения, которое ей
присвоено.
userId = “abc”
# тип str
print(type(userId)) # <class ‘str’>
userId = 234
# тип int
print(type(userId)) # <class ‘int’>
• При этом в процессе работы
программы мы можем
изменить тип переменной,
присвоив ей значение другого
типа.
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
9

10.

Преобразование типов
• В операциях с данными могут применяться
значения различных типов. Например,
складываются число типа int и число типа float.
• Оба числа в арифметических операциях должны
представлять один и тот же тип. Если же два
операнда операции представляют разные типы
данных, то Python пытается автоматически
выполнить преобразования к одному из типов.
• Если типы int и float, то преобразовывается к float.
• В некоторых случаях возникает необходимость
вручную выполнить преобразование типов. Для
преобразования типов Python предоставляет ряд
встроенных функций:
• int() – преобразует значение в целое число
• float() – преобразует значение в число с
плавающей точкой
• str() – преобразует значение в строку
a = 2
b = 2.5
c = a + b
print(c)
# число int
# число float
# 4.5
a
b
c
e
f
=
=
=
=
=
int(15)
int(3.7)
int(“4”)
int(False)
int(True)
a
b
c
d
e
f
=
=
=
=
=
=
float(15)
float(3.7)
float(“4.7”)
float(“5”)
float(False)
float(True)
#
#
#
#
#
#
a
b
c
d
e
f
=
=
=
=
=
=
15.0
3.7
4.7
5.0
0.0
1.0
a
b
c
d
=
=
=
=
str(False)
str(True)
str(5)
str(5.7)
#
#
#
#
a
b
c
d
=
=
=
=
“False”
“True”
“5”
“5.7”
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
# a = 15
# b = 3
# c = 4
# e = 0
# f = 1
10

11.

Работа с числами
Python поддерживает все
распространенные арифметические
операции:
• Сложение
• Вычитание
• Умножение
• Деление
print(7
print(7
print(7
print(7
print(7
print(7
print(7
+ 2)
- 2)
* 2)
/ 2)
// 2)
** 2)
% 2)
#
#
#
#
#
#
#
9
5
14
3.5
3
49
1
• Целочисленное деление
• Возведение в степень
• Получение остатка от деления
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
11

12.

Работа с числами
При последовательном использовании
нескольких арифметических операций их
выполнение производится в соответствии
с их приоритетом. Который указан в
таблице
Операции
()
скобки
**
Возведение в степень
*, /, //, %
Умножение, деление,
деление без остатка, остаток
от деления
+, -
Сложение, вычитание
number = 3 + 4 * 5 ** 2 + (7 - 2)
print(number) # 108
‘’’
Первым выполнится вычитание 7 - 2 = 5
Далее возведение в степень 5 ** 2 = 25
После этого выполняется умножение 4 * 25 = 100
Далее сложение слева направо 3 + 100 + 5
‘’’
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
12

13.

Работа с числами
Арифметические операции с присвоением
Ряд специальных операций позволяют
использовать присвоить результат операции
первому операнду:
• +=
• -=
• *=
• /=
number = 10
number += 5
print(number)
number *= 4
print(number)
# 15
# 60
• //=
• **=
• %=
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
13

14.

Операции сравнения
• Ряд операций представляют условные
выражения.
• Все эти операции принимают два операнда и
возвращают логическое значение, которое в
Python представляет тип bool.
• == возвращает True, если операнды равны.
Иначе возвращает False.
• != возвращает True, если операнды НЕ равны.
Иначе возвращает False.
• > возвращает True, если первый операнд
больше второго.
a = 5
b = 6
result = 5 == 6
print(result) # False - 5 не равно 6
print(a != b) # True
print(a > b) # False - 5 меньше 6
print(a < b) # True
bool1 = True
bool2 = False
print(bool1 == bool2)
не равно bool2
# False - bool1
• < возвращает True, если первый операнд
меньше второго.
• >= возвращает True, если первый операнд
больше или равен второму.
• <= возвращает True, если первый операнд
меньше или равен второму.
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
14

15.

Логические операции
Для создания составных условных выражений
применяются логические операции. В Python имеются
следующие логические операторы:
• and – логическое умножение. Возвращает True,
если оба выражения равны True.
• or – логическое сложение. Возвращает True, если
хотя бы одно выражение равно True.
• not – логическое отрицание. Возвращает True, если
выражение False.
• in – Оператор принадлежности. Возвращает True,
если в некотором наборе значений есть
определенное значение
Если один из операндов оператора and возвращает
False, то другой операнд уже не оценивается, так как
оператор в любом случае возвратит False.
Аналогично если один из операндов оператора or
возвращает True, то второй операнд не оценивается,
так как оператор в любом случае возвратит True.
age = 22
weight = 58
result = age > 21 and weight == 58
print(result) # True
age = 22
isMarried = False
result = age > 21 or isMarried
print(result) # True, так как выражение age > 21
равно True
age = 22
isMarried = False
print(not age > 21) # False
print(not isMarried) # True
message = “hello world!”
hello = “hello”
print(hello in message) # True - подстрока hello
есть в строке “hello world!”
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
15

16.

Условная конструкция if
• Условные конструкции используют условные
выражения и в зависимости от их значения
направляют выполнение программы по одному из
путей.
if логическое_выражение:
инструкции
[elif логическое выражение:
инструкции]
[else:
инструкции]
• Одна из таких конструкций - это конструкция if.
• Если вдруг нам надо определить альтернативное
решение на тот случай, если выражение в if возвратит
False, то мы можем использовать блок else.
• Если необходимо ввести несколько альтернативных
условий, то можно использовать дополнительные
блоки elif, после которого идет блок инструкций.
• Сначала Python проверяет выражение if. Если оно
равно True, то выполнениются инструкции из блока if.
Если это условие возвращает False, то Python
проверяет выражение из elif.
Если выражение после elif равно True, то выполняются
инструкции из блока elif. Но если оно равно False то
выполняются инструкции из блока else.
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
language = “english”
if language == “english”:
print(“Hello”)
print(“End”)
language = “russian”
if language == “english”:
print(“Hello”)
else:
print(“Привет”)
print(“End”)
language = “german”
if language == “english”:
print(“Hello”)
elif language == “german”:
print(“Hallo”)
elif language == “french”:
print(“Salut”)
else:
print(“Привет”)
16

17.

Циклы
• Циклы позволяют выполнять некоторое действие в
зависимости от соблюдения некоторого условия. В
языке Python есть 2 типа циклов – while и for.
• Цикл while проверяет истинность некоторого
условия, и если условие истинно, то выполняет
инструкции цикла.
• После ключевого слова while указывается условное
выражение, и пока это выражение возвращает
значение True, будет выполняться блок инструкций,
который идет далее.
• Все инструкции, которые относятся к циклу while,
располагаются на последующих строках и должны
иметь отступ от начала ключевого слова while.
while условное_выражение:
инструкции
number = 1
while number < 5:
print(f”number = {number}”)
number += 1
print(“Работа программы завершена”)
‘’’
number = 1
number = 2
number = 3
number = 4
Работа программы завершена
‘’’
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
17

18.

Циклы
• Цикл for пробегается по набору значений,
помещает каждое значение в переменную, и затем
в цикле мы можем с этой переменной производить
различные действия.
• После ключевого слова for идет название
переменной, в которую будут помещаться
значения. Затем после оператора in указывается
набор значений и двоеточие.
• А со следующей строки располагается блок
инструкций цикла, которые также должны иметь
отступы от начала цикла.
• При выполнении цикла Python последовательно
получает все значения из набора и передает их
переменную. Когда все значения из набора будут
перебраны, цикл завершает свою работу.
for переменная in набор_значений:
инструкции
message = “Hello”
for c in message:
print(c)
‘’’
H
e
l
l
o
‘’’
• В качестве набора значений, например, можно
рассматривать строку, которая по сути представляет
набор символов, или список (об этом немного
позже).
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
18

19.

Циклы
• Для цикла также можно определить
дополнительный блок else
• В цикле while инструкции блока else
выполняются, когда условие равно False.
• В цикле for иснструкции блока else
выполняются после завершения цикла.
message = “Hello”
for c in message:
print(c)
else:
print(f”Последний символ: {c}. Цикл завершен”);
print(“Работа программы завершена”)
‘’’
H
e
l
l
o
Последний символ: o. Цикл завершен
Работа программы завершена
‘’’
number = 1
while number < 5:
print(f”number = {number}”)
number += 1
else:
print(f”number = {number}. Работа цикла завершена”)
print(“Работа программы завершена”)
‘’’
number = 1
number = 2
number = 3
number = 4
number = 5. Работа цикла завершена
Работа программы завершена
‘’’
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
19

20.

Циклы
• Для управления циклом мы можем использовать
специальные операторы break и continue.
• Оператор break осуществляет выход из цикла.
• А оператор continue выполняет переход к
следующей итерации цикла.
• При выходе из цикла с помощью break ветка else
не исполняется.
number = 0
while number < 5:
number += 1
if number == 3 : # если number = 3, переходим к
новой итерации цикла
break
print(f”number = {number}”)
else:
print(f”number = {number}. Работа цикла завершена”)
‘’’
number = 1
number = 2
‘’’
number = 0
while number < 5:
number += 1
if number == 3 : # если number = 3, выходим из
цикла
break
print(f”number = {number}”)
‘’’
number = 1
number = 2
‘’’
number = 0
while number < 5:
number += 1
if number == 3 : # если number = 3, переходим к
новой итерации цикла
continue
print(f”number = {number}”)
‘’’
number = 1
number = 2
number = 4
number = 5
‘’’
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
20

21.

Функции
• Функции представляют блок кода, который
выполняет определенную задачу и который
можно повторно использовать в других частях
программы.
• В частности, функция print(), которая выводит
некоторое значение на консоль.
def имя_функции ([параметры]):
инструкции
def say_hello():
print("Hello")
• Python имеет множество встроенных функций
и позволяет определять свои функции.
• Определение функции начинается с
выражения def, которое состоит из имени
функции, набора скобок с параметрами и
двоеточия.
• Параметры в скобках необязательны.
• А со следующей строки идет блок инструкций,
которые выполняет функция.
• Все инструкции функции имеют отступы от
начала строки
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
21

22.

Функции
• Для вызова функции указывается имя
функции, после которого в скобках идет
передача значений для всех ее параметров.
• Обратите внимание, что функция сначала
определяется, а потом вызывается.
• Функция может принимать параметры. Через
параметры в функцию можно передавать
данные.
def print_person(name, age):
print(f"Name: {name}")
print(f"Age: {age}")
имя_функции ([параметры])
def say_smth(something_arg):
print(something_arg)
say_smth(“Hello”)
say_smth(“I am a”)
say_smth(“Robot”)
‘’’
Hello
I am a
Robot
‘’’
print_person("Tom", 37)
‘’’
Name: Tom
Age: 37
‘’’
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
22

23.

Функции
• Некоторые параметры функции мы можем
сделать необязательными, указав для них
значения по умолчанию при определении
функции.
• Если функция имеет несколько параметров, то
необязательные параметры должны идти
после обязательных.
• Также можно передавать значения
параметрам по имени. Для этого при вызове
функции указывается имя параметра и ему
присваивается значение
• С помощью символа звездочки можно
определить параметр, через который можно
передавать неопределенное количество
значений. Это может быть полезно, когда мы
хотим, чтобы функция получала несколько
значений, но мы точно не знаем, сколько
именно.
def say_hello(name=”Tom”):
print(f”Hello, {name}”)
say_hello()
say_hello(“Bob”)
# Hello, Tom
# Hello, Bob
def print_person(name, age = 18):
print(f"Name: {name} Age: {age}")
print_person("Bob")
print_person("Tom", 37)
def print_person(name, age):
print(f”Name: {name} Age: {age}”)
print_person(age = 22, name = “Tom”)
def sum(*numbers):
result = 0
for n in numbers:
result += n
print(f”sum = {result}”)
sum(1, 2, 3, 4, 5)
sum(3, 4, 5, 6)
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
# sum = 15
# sum = 18
23

24.

Функции
• Функция может возвращать результат. Для
этого в функции используется оператор return,
после которого указывается возвращаемое
значение.
• Оператор return не только возвращает
значение, но и производит выход из функции.
Поэтому он должен определяться после
остальных инструкций
• Однако мы можем использовать оператор
return и в таких функциях, которые не
возвращают никакого значения. В этом случае
после оператора return не ставится никакого
возвращаемого значения. Типичная ситуация в зависимости от опеределенных условий
произвести выход из функции
def имя_функции ([параметры]):
инструкции
return возвращаемое_значение
def get_message():
return “Hello Geoscan”
message = get_message() # получаем результат
функции get_message в переменную message
print(message)
# Hello Geoscan
# можно напрямую передать результат функции
print(get_message())
# Hello Geoscan
def print_person(name, age):
if age > 120 or age < 1:
print(“Invalid age”)
return
print(f”Name: {name} Age: {age}”)
print_person(“Tom”, 22)
print_person(“Bob”, -102)
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
# Name: Tom Age: 22
# Invalid age
24

25.

Анонимные функции
• Небольшие фанкции могут быть анонимными.
lambda [параметры] : инструкция
• Такие функции работают быстрее обычных.
message = lambda: print(“hello”)
• Ананомные функцииопределяются с помощью
оператора lambda и называются lambdaфункциями или lambda-выражениями.
message()
# hello
square = lambda n: n * n
• Хотя лямбда-выражения позволяют немного
сократить определения функций, тем не
менее они ограничены тем, что они могут
выполнять только одну инструкцию.
print(square(4))
print(square(5))
# 16
# 25
sum = lambda a, b: a + b
• Однако они могут быть довольно удобны в тех
случаях, когда необходимо использовать
функцию для передачи в качестве параметра
или возвращения в другой функции.
def
Например, передача лямбда-выражения в
качестве параметра.
print(sum(4, 5))
print(sum(5, 6))
# 9
# 11
do_operation(a, b, operation):
result = operation(a, b)
print(f”result = {result}”)
do_operation(5, 4, lambda a, b: a + b)
do_operation(5, 4, lambda a, b: a * b)
20
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
# result = 9
# result =
25

26.

Типы данных 2.0
• Для работы с наборами данных Python предоставляет
встроенные типы – списки, кортежи, диапазоны.
• Список (list) представляет тип данных, который хранит набор
или последовательность элементов. Во многих языках
программирования есть аналогичная структура данных,
которая называется массив.
numbers = [1, 2, 3, 4, 5]
num_2 = list(numbers)
print(num_2) # [1, 2, 3, 4, 5]
• Для создания списка применяются квадратные скобки [],
внутри которых через запятую перечисляются элементы
списка.
• Также для создания списка можно использовать функциюконструктор list(), которая принимает набор значений.
• Список необязательно должен содержать только однотипные
объекты. Мы можем поместить в один и тот же список
одновременно строки, числа, объекты других типов данных.
• Если необходимо создать список, в котором повторяется
одно и то же значение несколько раз, то можно использовать
символ звездочки *, то есть фактически применить операцию
умножения к уже существующему списку
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
objects = [1, 2.6, “Hello”, True]
num = [5] * 6
print(num)
# 6 раз повторяем 5
# [5, 5, 5, 5, 5, 5]
26

27.

Типы данных 2.0
• Для обращения к элементам списка надо использовать
индексы, которые представляют номер элемента в списка.
• Индексы начинаются с нуля. То есть первый элемент будет
иметь индекс 0, второй элемент - индекс 1 и так далее.
• Для обращения к элементам с конца можно использовать
отрицательные индексы, начиная с -1. То есть у последнего
элемента будет индекс -1, у предпоследнего - -2 и так
далее.
• Для изменения элемента списка достаточно присвоить ему
новое значение.
• Для перебора элементов можно использовать как цикл for,
так и цикл while.
people = [“Tom”, “Sam”, “Bob”]
for person in people:
print(person)
people = [“Tom”, “Sam”, “Bob”]
# получение элементов с начала списка
print(people[0])
# Tom
print(people[1])
# Sam
print(people[2])
# Bob
# получение элементов
print(people[-2])
#
print(people[-1])
#
print(people[-3])
#
с конца списка
Sam
Bob
Tom
people = [“Tom”, “Sam”, “Bob”]
i = 0
while i < len(people):
print(people[i])
i += 1
people = [“Tom”, “Sam”, “Bob”]
people[1] = “Mike” # изменение второго элемента
print(people[1])
# Mike
print(people)
# [“Tom”, “Mike”, “Bob”]
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
27

28.

Типы данных 2.0
Для управления элементами списки имеют целый ряд методов и функций:
append(item): добавляет элемент item в конец списка
insert(index, item): добавляет элемент item в список по индексу index
extend(items): добавляет набор элементов items в конец списка
remove(item): удаляет элемент item. Удаляется только первое вхождение элемента. Если элемент не найден, генерирует
исключение ValueError
clear(): удаление всех элементов из списка
index(item): возвращает индекс элемента item. Если элемент не найден, генерирует исключение ValueError
pop([index]): удаляет и возвращает элемент по индексу index. Если индекс не передан, то просто удаляет последний элемент.
count(item): возвращает количество вхождений элемента item в список
sort([key]): сортирует элементы. По умолчанию сортирует по возрастанию. Но с помощью параметра key мы можем передать
функцию сортировки.
reverse(): расставляет все элементы в списке в обратном порядке
copy(): копирует список
len(list): возвращает длину списка
sorted(list, [key]): возвращает отсортированный список
min(list): возвращает наименьший элемент списка
max(list): возвращает наибольший элемент списка
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
28

29.

Типы данных 2.0
• Кортеж (tuple) представляет последовательность элементов,
которая во многом похожа на список за тем исключением, что
кортеж является неизменяемым (immutable) типом. Поэтому
мы не можем добавлять или удалять элементы в кортеже,
изменять его.
• Для создания кортежа используются круглые скобки, в которые
помещаются его значения, разделенные запятыми.
tom = ("Tom", 23)
print(tom)
# ("Tom", 23)
tom = “Tom”, 23
print(tom)
# (“Tom”, 23)
• Также для определения кортежа мы можем просто перечислить
значения через запятую без применения скобок.
tom = ("Tom",)
• Если вдруг кортеж состоит из одного элемента, то после
единственного элемента кортежа необходимо поставить
запятую
data = ["Tom", 37, "Google"]
tom = tuple(data)
print(tom) # ("Tom", 37, "Google")
• Для создания кортежа из другого набора элементов, например,
из списка, можно передать список в функцию tuple(), которая
возвратит кортеж.
• Обращение к элементам в кортеже происходит также, как и в
списке, по индексу. Индексация начинается также с нуля при
получении элементов с начала списка и с -1 при получении
элементов с конца списка:
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
tom = (“Alex”, 22, “Geoscan”,
“developer”)
print(tom[0])
# Alex
print(tom[1])
# 22
print(tom[-1])
# developer
29

30.

Типы данных 2.0
Диапазон (range) представляют неизменяемый
последовательный набор чисел. Для создания диапазов
применяется range, которая имеет следующие формы:
• range(stop): возвращает все целые числа от 0 до stop
• range(start, stop): возвращает все целые числа в
промежутке от start (включая) до stop (не включая).
• range(start, stop, step): возвращает целые числа в
промежутке от start (включая) до stop (не включая),
которые увеличиваются на значение step
range(5)
range(1, 5)
range(2, 10, 2)
range(10, 2, -2)
#
#
#
#
0,
1,
2,
10
1, 2, 3, 4
2, 3, 4
4, 6, 8
8 6 4
for i in range(5):
print(i, end=” “)
# Консольный вывод
# 0, 1, 2, 3, 4
Диапазоны чаще всего применяются в циклах for.
Если нам необходим последовательный список чисел, то
для его создания удобно использовать функцию range:
numbers = list(range(10))
print(numbers)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers = list(range(2, 10))
print(numbers)
# [2, 3, 4, 5, 6, 7, 8, 9]
numbers = list(range(10, 2, -2))
print(numbers)
# [10, 8, 6, 4]
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
30

31.

Потоки (Threads)
• Когда вы запускаете программу она работает последовательно. Но если
вам необходимо, чтобы некоторые операции выполнялись параллельно?
• Для этого были придуманы потоки.
• Чтот такое поток? В упрощённом виде потоки — это параллельно
выполняемые задачи. По умолчанию используется один поток — это
значит, что программа делает всё по очереди, линейно, без возможности
делать несколько дел одновременно.
• Но если мы сделаем в программе два потока задач, то они будут работать
параллельно и независимо друг от друга. Одному потоку не нужно будет
становиться на паузу, когда в другом что-то происходит.
• Важно понимать, что поток — это высокоуровневое понятие из области
программирования. На уровне вашего «железа» эти потоки всё ещё могут
обсчитываться последовательно. Но благодаря тому, что они будут
обсчитываться быстро, вам может показаться, что они работают
параллельно.
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
31

32.

Потоки (Threads)
• За потоки в Python отвечает модуль threading, а сам поток можно создать с помощью класса Thread из
этого модуля. Подключается он так:
from threading import Thread
• После этого с помощью функции Thread() мы сможем создать столько потоков, сколько нам нужно.
• Есть два способа запустить какое либо действие:
1. Передать вызываемый объект (функцию) в конструктор.
2. Переопределить метод Thread.run() в подклассе.
• Как только объект потока создан, его деятельность должна быть запущена путем вызова метода потока
Thread.start(). Это вызывает метод Thread.run() в отдельном потоке управления.
• Как только активность потока запущена, он считается "живым". Поток перестает быть активным, когда
его метод Thread.run() завершается либо обычно, либо при возникновении необработанного
исключения. Метод Thread.is_alive() проверяет, жив ли поток.
• Другие потоки могут вызывать метод Thread.join(), который блокирует вызывающий поток до тех пор,
пока не завершится поток, чей метод .join() вызван. Например, если для всех порожденных
программой потоков вызвать этот метод, то дальнейшее выполнение программы будет заблокировано
до тех пор пока все потоки не завершатся.
• У потока есть имя. Имя может быть передано конструктору (аргумент name) и прочитано или изменено
через атрибут Thread.name.
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
32

33.

Потоки (Threads)
• Поток можно пометить как "демонический поток". Значение этого
флага заключается в том, что когда программа Python завершается,
работающими остаются только потоки демона. Начальное значение
наследуется от создающего потока. Флаг можно установить с помощью
свойства Thread.daemon или аргумента конструктора daemon.
• Потоки демона внезапно останавливаются при завершении работы. Их
ресурсы (такие как открытые файлы, транзакции базы данных и т. д.)
могут быть освобождены неправильно. Если необходимо, чтобы потоки
корректно останавливались, то делайте их недемоническими и
используйте подходящий механизм сигнализации, такой как объект
threading.Event().
• Существует объект основного потока программы. Основной поток
соответствует начальному потоку управления в программе Python. Это
не поток демона.
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
33

34.

Потоки (Threads)
Основные атрибуты и методы объекта Thread:
• Thread.start() запускает экземпляр Thread,
• Thread.run() представляет активность потока,
• Thread.join() ждет, пока поток не завершится,
• Thread.name имя потока,
• Thread.ident идентификатор потока,
• Thread.native_id интегральный идентификатор потока,
• Thread.is_alive() сообщает, является ли поток живим,
• Thread.daemon сообщает, является ли поток демоническим,
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
34

35.

Потоки (Threads)
import threading, time
def worker(num_thread):
print(f'Старт потока №{num_thread}')
time.sleep(1)
print(f'Завершение работы потока №{num_thread}')
for i in range(2):
# создаем экземпляры 'Thread' с функцией
# 'worker()', которая запустится в отдельных
# трех потоках. Позиционные аргументы для
# функции 'worker()' передаются в кортеже `args`
thread = threading.Thread(target=worker, args=(i,))
# запускаем экземпляр `thread`
thread.start()
#
#
#
#
Старт потока №0
Старт потока №1
Завершение работы потока №0
Завершение работы потока №1
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
35

36.

Отладка
• Отладка позволяет остановить программу на нужной вам
строке и посмотреть значение и тип всех переменных в этот
момент.
• Также программу можно начать выполнять по шагам, что
позволяет проследить все вызовы и проще разобраться в том,
что происходит.
• Для отладки в PyCharm сперва необходимо поставить точку
останова.
• Делается это справа от номера строки кода
• После добавления точек останова можно выполнить отладку.
• Для этого нажать пкм и выбрать Debag. Откроется окно со
значениями переменных на момент дохождения до первой
точки остановы.
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
36

37.

Отладка
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
37

38.

Итоги занятия
Познакомились с основами Python
Изучили основные типы данных и их использование
Познакомились с циклами и условными операторами
Научились создавать свои функции
Познакомились с механизмом распараллеливания
вычислений
• Узнали как выполнять отладку созданной программы
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
38

39.

Вопросы для самоподготовки
1.
2.
3.
4.
5.
6.
Базовые типы Python?
Циклы в Python?
Что такое список?
Как обращаться к элементам списка?
Для чего применяется многопоточность?
Какая библиотека отвечает за многопоточность?
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
39

40.

Домашнее задание
обязательно
• Изучить встроенные функции input(), print(), str.split().
• Попробовать написать простой калькулятор, который
принимает строку типа «A + B» и возвращает посчитанное
значение.
• Попробовать реализовать многопоточную программу
подсчёта суммы от 1 до N.
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
40

41.

Дополнительные материалы
1.
Сайт docs.python [электронный ресурс] https://docs.python.org/3/ Содержание: На
странице содержится документация на Python 3.
2.
Сайт METAINT [электронный ресурс] https://metanit.com/python/tutorial/ Содержание:
Руководство для новичков по языку Python
3.
Статья про многопоточные приложения на Python [электронный ресурс]
https://habr.com/ru/post/149420/
ВСЕРОССИЙСКИЙ КОНКУРС «КАДРЫ ДЛЯ ЦИФРОВОЙ ПРОМЫШЛЕННОСТИ.
СОЗДАНИЕ ЗАКОНЧЕННЫХ ПРОЕКТНО-КОНСТРУКТОРСКИХ РЕШЕНИЙ В РЕЖИМЕ СОРЕВНОВАНИЙ «КИБЕРДРОМ»
41

42.

Божко Петр
Программист отдела образовательных
проектов ГК “Геоскан”
Telegram - канал
English     Русский Правила