Программирование на языке Python
История создания
Популярные языки программирования на 2019 по рейтингу TIOBE
Простейшая программа
Имена переменных
Типы переменных
Ввод значения с клавиатуры
Ввод с подсказкой
Вывод данных
Вывод данных через format
Сложение чисел: простое решение
Ввод данных с клавиатуры
Сложение чисел: полное решение
Арифметическое выражения
Операторы // и %
Сокращенная запись операций
Ввод двух значений в одной строке
Генератор случайных чисел
Генератор случайных чисел
Условный оператор
Условный оператор: неполная форма
Знаки отношений
Вложенные условные операторы
Каскадное ветвление
Каскадное ветвление
Сложные условия
Сложные условия
Сложные условия
Символьные строки
Символьные строки
Символьные строки
Срезы
Срезы строк
Операции со строками
Операции со строками
Цикл с условием
Цикл с условием
Цикл с переменной
Цикл с переменной
Цикл с переменной: другой шаг
Сколько раз выполняется цикл?
Обработка строк в цикле
Проверка символов
Что такое массив?
Что такое массив?
Массивы в Python: списки
Заполнение массива
Заполнение случайными числами
Вывод массива на экран
Ввод массива с клавиатуры
Как обработать все элементы массива?
Перебор элементов
Что выведет программа?
Подсчёт нужных элементов
Перебор элементов
Среднее арифметическое
Поиск в массиве
Поиск в массиве
Поиск в массиве
Максимальный элемент
Максимальный элемент и его номер
Максимальный элемент и его номер
Два типа подпрограмм
Простая процедура
Линии разной длины
Процедура с параметром
Несколько параметров
Что такое функция?
Как вызывать функцию?
Как вызывать функцию?
Как вызывать функцию?
Максимум из двух (трёх) чисел
Сумма цифр числа
Логические функции
2.87M
Category: programmingprogramming

Программирование на языке Python

1. Программирование на языке Python

1
Программирование
на языке Python
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

2.

2
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

3. История создания

Алгоритмизация и программирование, язык Python
3
История создания
Разработка языка Python была начата в конце 1980-х
годов сотрудником голландского института CWI (Центр
математики и информатики) Гвидо ван Россумом.
В феврале 1991 года Гвидо опубликовал исходный
текст в группе новостей alt.sources.
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

4. Популярные языки программирования на 2019 по рейтингу TIOBE

Алгоритмизация и программирование, язык Python
4
Популярные языки программирования на 2019 по рейтингу TIOBE
Индекс TIOBE (TIOBE programming community index) - это один из известных индексов,
показывающий степень востребованности языка программирования, анализируя данные запросов в
поисковых системах. Обновляется данный индекс каждый в месяц. Рейтинг учитывает как
количество квалифицированных инженеров во всем мире, так и количество образовательных курсов
по различным языкам.
Данные на 9/09/2019
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

5.

Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015
5
http://kpolyakov.spb.ru

6.

Алгоритмизация и программирование, язык Python
К.Ю. Поляков, 2015
6
http://kpolyakov.spb.ru

7. Простейшая программа

Алгоритмизация и программирование, язык Python
7
Простейшая программа
# Это пустая программа
?
Что делает эта программа?
комментарии после #
не обрабатываются
"""
Это тоже комментарий
"""
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

8. Имена переменных

Алгоритмизация и программирование, язык Python
8
Имена переменных
МОЖНО использовать
• латинские буквы (A-Z, a-z)
заглавные и строчные буквы различаются
• русские буквы (не рекомендуется!)
• цифры
имя не может начинаться с цифры
• знак подчеркивания _
НЕЛЬЗЯ использовать
• скобки
• знаки +, =, !, ? и др.
Какие имена правильные?
AXby R&B 4Wheel Вася “PesBarbos”
TU154 [QuQu] _ABBA A+B
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

9. Типы переменных

Алгоритмизация и программирование, язык Python
9
Типы переменных
a=4
print ( type(a) )
<class 'int'>
a = 4.5
print ( type(a) )
<class 'float'>
a = "Вася"
print ( type(a) )
<class 'str'>
a = True
print ( type(a) )
<class 'bool'>
К.Ю. Поляков, 2015
целое число (integer)
вещественное число
символьная строка
логическая
http://kpolyakov.spb.ru

10. Ввод значения с клавиатуры

Алгоритмизация и программирование, язык Python
10
Ввод значения с клавиатуры
a = input()
b = input()
ввести строку с клавиатуры
и связать с переменной a
Протокол:
21
33
2133
с=a + b
print ( c )
!
?
Почему?
Результат функции input – строка символов!
преобразовать в
целое число
a = int( input() )
b = int( input() )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

11. Ввод с подсказкой

Алгоритмизация и программирование, язык Python
11
Ввод с подсказкой
a = input ( "Введите число: " )
Введите число: 26
?
подсказка
Что не так?
a = int( input("Введите число: ") )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

12. Вывод данных

Алгоритмизация и программирование, язык Python
12
Вывод данных
print ( a )
значение
переменной
значение и
текст
print ( "Ответ: ", a )
перечисление через запятую
print ( "Ответ: ", a+b )
вычисление
выражения
print ( a, "+", b, "=", c )
2 + 3 = 5
через пробелы
print ( a, "+", b, "=", c, sep = "" )
2+3=5
К.Ю. Поляков, 2015
убрать разделители
http://kpolyakov.spb.ru

13. Вывод данных через format

Алгоритмизация и программирование, язык Python
13
Вывод данных через format
print ( a, "+", b, "=", c, sep = "" )
2+3=5
print ( "{}+{}={}".format(a, b, c ) )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

14. Сложение чисел: простое решение

Алгоритмизация и программирование, язык Python
14
Сложение чисел: простое решение
a = int ( input() )
b = int ( input() )
c=a+b
print ( c )
?
Что плохо?
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

15. Ввод данных с клавиатуры

Алгоритмизация и программирование, язык Python
15
Ввод данных с клавиатуры
Вещественное число:
print( 'Введите число:' )
x = float (input())
или так:
x = float (input('Введите число:'))
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

16. Сложение чисел: полное решение

Алгоритмизация и программирование, язык Python
16
Сложение чисел: полное решение
print ( "Введите два числа: " )
a = int ( input() )
подсказка
b = int ( input() )
c=a+b
print ( a, "+", b, "=", c, sep="" )
Протокол:
компьютер
Введите два целых числа
25
пользователь
30
25+30=55
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

17. Арифметическое выражения

Алгоритмизация и программирование, язык Python
17
Арифметическое выражения
3
1
2
4
5
6
a = (c + b**5*3 - 1) / 2 * d
Приоритет (старшинство):
1) скобки
2) возведение в степень **
3) умножение и деление
4) сложение и вычитание
a = (c + b*5*3 - 1) \
/2*d
a = (c + b*5*3
- 1) / 2 * d
К.Ю. Поляков, 2015
c b5 3 1
a
d
2
перенос на
следующую строку
перенос внутри
скобок разрешён
http://kpolyakov.spb.ru

18. Операторы // и %

Алгоритмизация и программирование, язык Python
18
Операторы // и %
a
d
a
d
a
d
a
d
a
=
=
=
=
=
=
=
=
=
1234
a % 10;
a // 10
a % 10;
a // 10
a % 10;
a // 10
a % 10;
a // 10
К.Ю. Поляков, 2015
print(
# 123
print(
# 12
print(
# 1
print(
# 0
d )
4
d )
3
d )
2
d )
1
http://kpolyakov.spb.ru

19. Сокращенная запись операций

Алгоритмизация и программирование, язык Python
19
Сокращенная запись операций
a
a
a
a
a
a
+= b
-= b
*= b
/= b
//= b
%= b
К.Ю. Поляков, 2015
#
#
#
#
#
#
a
a
a
a
a
a
=
=
=
=
=
=
a
a
a
a
a
a
+ b
- b
* b
/ b
// b
% b
a += 1
увеличение на 1
http://kpolyakov.spb.ru

20. Ввод двух значений в одной строке

Алгоритмизация и программирование, язык Python
20
Ввод двух значений в одной строке
a, b = map ( int, input().split() )
21 33 input()
ввести строку с клавиатуры
21 33 input().split()
целые
применить
разделить строку на
части по пробелам
21 33 map ( int, input().split() )
эту
операцию
к каждой части
a, b = map ( int, input().split() )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

21. Генератор случайных чисел

Алгоритмизация и программирование, язык Python
21
Генератор случайных чисел
import random
англ. random – случайный
Целые числа на отрезке [a,b]:
X = random.randint(1,6) # псевдосл. число
Y = random.randint(1,6) # уже другое число!
Генератор на [0,1):
X = random.random()
Y = random.random()
# псевдосл. число
# уже другое число!
Генератор на [a, b] (вещественные числа):
X = random.uniform(1.2, 3.5)
Y = random.uniform(1.2, 3.5)
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

22. Генератор случайных чисел

Алгоритмизация и программирование, язык Python
22
Генератор случайных чисел
from random import *
подключить все!
англ. random – случайный
Целые числа на отрезке [a,b]:
X = randint(10,60) # псевдослучайное число
Y = randint(10,60) # это уже другое число!
Генератор на [0,1):
X = random()
Y = random()
К.Ю. Поляков, 2015
# псевдослучайное число
# это уже другое число!
http://kpolyakov.spb.ru

23. Условный оператор

Алгоритмизация и программирование, язык Python
23
Условный оператор
Задача: изменить порядок действий в зависимости от
выполнения некоторого условия.
полная
форма
да
нет
ветвления
a > b?
M=a
M=b
вывод M
отступы
К.Ю. Поляков, 2015
?
Если a = b?
if a > b:
M = a
else:
M = b
http://kpolyakov.spb.ru

24. Условный оператор: неполная форма

Алгоритмизация и программирование, язык Python
24
Условный оператор: неполная форма
M=a
да
b > a?
нет
M = a
if b > a:
M = b
M=b
неполная
форма
ветвления
вывод M
Решение в стиле Python:
M = max(a, b)
К.Ю. Поляков, 2015
M = a if a > b else b
http://kpolyakov.spb.ru

25. Знаки отношений

Алгоритмизация и программирование, язык Python
25
Знаки отношений
> <
больше, меньше
>=
больше или равно
<=
меньше или равно
==
равно
!=
не равно
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

26. Вложенные условные операторы

Алгоритмизация и программирование, язык Python
26
Вложенные условные операторы
Задача: в переменных a и b записаны возрасты Андрея и
Бориса. Кто из них старше?
Сколько вариантов?
if a > b:
print("Андрей старше")
else:
if a == b:
print("Одного возраста")
else:
print("Борис старше")
?
?
Зачем нужен?
К.Ю. Поляков, 2015
вложенный
условный оператор
http://kpolyakov.spb.ru

27. Каскадное ветвление

Алгоритмизация и программирование, язык Python
27
Каскадное ветвление
if a > b:
print("Андрей старше")
elif a == b:
print("Одного возраста")
else:
print("Борис старше")
!
elif = else if
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

28. Каскадное ветвление

Алгоритмизация и программирование, язык Python
28
Каскадное ветвление
cost = 1500
if cost < 1000:
print ( "Скидок
elif cost < 2000:
print ( "Скидка
elif cost < 5000:
print ( "Скидка
else:
print ( "Скидка
?
Что выведет?
К.Ю. Поляков, 2015
нет." )
2%." )
первое сработавшее
условие
5%." )
10%." )
Скидка 2%.
http://kpolyakov.spb.ru

29. Сложные условия

Алгоритмизация и программирование, язык Python
29
Сложные условия
Задача: набор сотрудников в возрасте 25-40 лет
(включительно). сложное условие
if v >= 25 and v <= 40 :
print("подходит")
else:
print("не подходит")
and «И»: одновременное выполнение
всех условий!
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

30. Сложные условия

Алгоритмизация и программирование, язык Python
30
Сложные условия
Задача: набор сотрудников в возрасте 25-40 лет
(включительно). сложное условие
if v < 25 or v > 40 :
print("не подходит")
else:
print("подходит")
or «ИЛИ»: выполнение хотя бы одного
из двух условий!
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

31. Сложные условия

Алгоритмизация и программирование, язык Python
31
Сложные условия
if not(a < b):
print("Cтарт!")
?
Как без «НЕ»?
not «НЕ»: если выполняется обратное условие
if a >= b:
print("Cтарт!")
Приоритет :
1) отношения (<, >, <=, >=, ==, !=)
2)not («НЕ»)
3)and («И»)
4)or («ИЛИ»)
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

32. Символьные строки

Алгоритмизация и программирование, язык Python
32
Символьные строки
Начальное значение:
!
s = "Привет!"
Вывод на экран:
print ( s )
Строка – это
последовательность
символов!
Сложение:
s1 = "Привет"
"Привет, Вася!"
s2 = "Вася"
s = s1 + ", " + s2 + "!"
Умножение:
s = "АУ"
s5 = s*5
К.Ю. Поляков, 2015
s5 = s + s + s + s + s
?
АУАУАУАУАУ
Что получим?
http://kpolyakov.spb.ru

33. Символьные строки

Алгоритмизация и программирование, язык Python
33
Символьные строки
Вывод символа на экран:
print ( s[5] )
print ( s[-2] )
0
1
2
3
4
5
6
П
р
и
в
е
т
!
s[len(s)-2]
s[0] s[1] s[2] s[3] s[4] s[5] s[6]
Длина строки:
n = len ( s )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

34. Символьные строки

Алгоритмизация и программирование, язык Python
34
Символьные строки
Ввод с клавиатуры:
s = input ( "Введите имя: " )
Изменение строки
строки:запрещено!
s[4] = "a"
!
Строка – это неизменяемый объект!
... но можно составить новую строку:
s1 = s + "a"
составить «кот»
s = "информатика"
print(s[-2]+s[3]+s[-4])
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

35. Срезы

Алгоритмизация и программирование, язык Python
35
Срезы
s = "0123456789"
s1 = s[3:8]
разрезы
0
К.Ю. Поляков, 2015
# "34567"
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
http://kpolyakov.spb.ru

36. Срезы строк

Алгоритмизация и программирование, язык Python
36
Срезы строк
s = "0123456789"
s1 = s[:8]
# "01234567"
от начала строки
s = "0123456789"
s1 = s[3:]
# "3456789"
до конца строки
s1 = s[::-1]
# "9876543210"
реверс строки
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

37. Операции со строками

Алгоритмизация и программирование, язык Python
37
Операции со строками
Срезы с отрицательными индексами:
s = "0123456789"
s1 = s[:-2]
# "01234567"
len(s)-2
s = "0123456789"
s1 = s[-6:-2]
len(s)-6
К.Ю. Поляков, 2015
# "4567"
len(s)-2
http://kpolyakov.spb.ru

38. Операции со строками

Алгоритмизация и программирование, язык Python
38
Операции со строками
Удаление:
s = "0123456789"
s1 = s[:3] + s[9:]
"012"
"9"
# "0129"
Вставка:
s = "0123456789"
s1 = s[:3] + "ABC" + s[3:]
"012ABC3456789"
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

39. Цикл с условием

Алгоритмизация и программирование, язык Python
39
Цикл с условием
Задача. Определить количество цифр в десятичной
записи целого положительного числа, записанного в
переменную n.
n
счётчик
счётчик = 0
пока n > 0:
1234
0
отсечь последнюю цифру n
123
1
увеличить счётчик на 1
12
2
?
Как отсечь последнюю цифру?
n = n // 10
?
1
0
3
4
Как увеличить счётчик на 1?
счётчик = счётчик + 1
К.Ю. Поляков, 2015
счётчик += 1
http://kpolyakov.spb.ru

40. Цикл с условием

Алгоритмизация и программирование, язык Python
40
Цикл с условием
начальное значение
счётчика
заголовок
цикла
!
условие
продолжения
count = 0
while n > 0 :
n = n // 10
count += 1
тело цикла
Цикл с предусловием – проверка на входе в цикл!
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

41. Цикл с переменной

Алгоритмизация и программирование, язык Python
41
Цикл с переменной
Задача. Вывести 10 раз слово «Привет!».
?
Можно ли сделать с циклом «пока»?
i=0
while i < 10 :
print("Привет!")
i += 1
Цикл с переменной:
for i in range(10) :
print("Привет!")
в диапазоне
[0,10)
!
Не включая 10!
range(10) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

42. Цикл с переменной

Алгоритмизация и программирование, язык Python
42
Цикл с переменной
Задача. Вывести все степени двойки от 21 до 210.
?
Как сделать с циклом «пока»?
возведение
в степень
k=1
while k <= 10 :
print ( 2**k )
k += 1
Цикл с переменной:
for k in range(1,11) :
print ( 2**k )
в диапазоне
[1,11)
!
Не включая 11!
range(1,11) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

43. Цикл с переменной: другой шаг

Алгоритмизация и программирование, язык Python
43
Цикл с переменной: другой шаг
10,9,8,7,6,5,4,3,2,1
шаг
for k in range(10,0,-1) :
print ( k**2 )
?
Что получится?
1,3,5,7,9
for k in range(1,11,2) :
print ( k**2 )
К.Ю. Поляков, 2015
1
9
25
49
81
100
81
64
49
36
25
16
9
4
1
http://kpolyakov.spb.ru

44. Сколько раз выполняется цикл?

Алгоритмизация и программирование, язык Python
44
Сколько раз выполняется цикл?
a=1
for k in range( 3): a += 1
a= 4
a=1
for k in range( 3,1): a += 1
a= 1
a=1
for k in range( 1,3,-1): a += 1
a= 1
a=1
for k in range( 3,0,-1): a += 1
a= 4
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

45. Обработка строк в цикле

Алгоритмизация и программирование, язык Python
45
Обработка строк в цикле
Задача. Ввести строку и определить, сколько в ней цифр.
счётчик = 0
для каждого символа строки:
если символ – цифра:
счётчик += 1
для всех символов в
s = input()
строке
k = 0
for c in s:
if c.isdigit():
k += 1
если c – это цифра
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

46. Проверка символов

Алгоритмизация и программирование, язык Python
46
Проверка символов
if c.isdigit():
print("Цифра")
if c.isalpha():
print("Буква")
if c.islower():
print("Строчная буква")
if c.isupper():
print("Заглавная буква")
if c in ["а","б"]:
print("Это а или б")
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

47. Что такое массив?

Алгоритмизация и программирование, язык Python
47
Что такое массив?
?
Как ввести 10000 переменных?
Массив – это группа переменных одного типа,
расположенных в памяти рядом (в соседних ячейках) и
имеющих общее имя. Каждая ячейка в массиве имеет
уникальный номер (индекс).
Надо:
• выделять память
• записывать данные в нужную ячейку
• читать данные из ячейки
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

48. Что такое массив?

Алгоритмизация и программирование, язык Python
48
Что такое массив?
!
Массив = таблица!
A
массив
0
НОМЕР
элемента массива
(ИНДЕКС)
1
5
10
A[0]
A[1]
22
15
15
3
4
20
25
ЗНАЧЕНИЕ
A[2]
A[3]
элемента массива
A[4]
НОМЕР (ИНДЕКС)
элемента массива: 2
A[2]
ЗНАЧЕНИЕ
элемента массива: 15
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

49. Массивы в Python: списки

Алгоритмизация и программирование, язык Python
49
Массивы в Python: списки
A = [1, 3, 4, 23, 5]
A = [1, 3] + [4, 23] + [5]
[1, 3, 4, 23, 5]
A = [0]*10
?
Что будет?
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Создание массива из N элементов:
N = 10
A = [0]*N
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

50. Заполнение массива

Алгоритмизация и программирование, язык Python
50
Заполнение массива
Целыми числами (начиная с 0!):
N = 10
# размер массива
A = [0]*N # выделить память
for i in range(N):
A[i] = i
for i in range(N):
A[i] = int( input() )
В краткой форме:
N = 10
# размер массива
A = [ i for i in range(N) ]
?
Как заполнить, начиная с 1?
?
К.Ю. Поляков, 2015
Как заполнить квадратами чисел?
http://kpolyakov.spb.ru

51. Заполнение случайными числами

Алгоритмизация и программирование, язык Python
51
Заполнение случайными числами
из библиотеки (модуля)
random
взять функцию randint
from random import randint
N = 10
# размер массива
A = [0]*N # выделить память
for i in range(N):
A[i] = randint(20,100)
В краткой форме:
from random import randint
N = 10
A = [ randint(20,100)
for i in range(N) ]
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

52. Вывод массива на экран

Алгоритмизация и программирование, язык Python
52
Вывод массива на экран
Как список:
print ( A ) [1, 2, 3, 4, 5]
В строчку через пробел:
for i in range(N):
print ( A[i], end = " " ) 1 2 3 4 5
пробел после
или так:
вывода очередного
числа
for x in A:
1 2 3 4 5
print ( x, end = " " )
или так:
print ( *A )
К.Ю. Поляков, 2015
print (1, 2, 3, 4, 5)
разбить список
на элементы
http://kpolyakov.spb.ru

53. Ввод массива с клавиатуры

Алгоритмизация и программирование, язык Python
53
Ввод массива с клавиатуры
Ввод всех чисел в одной строке:
data = input()
# "1 2 3 4 5"
s = data.split() # ["1","2","3","4","5"]
A = [ int(x) for x in s ]
# [1,2,3,4,5]
или так:
A = [int(x) for x in input().split()]
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

54. Как обработать все элементы массива?

Алгоритмизация и программирование, язык Python
54
Как обработать все элементы массива?
Обработка с переменной:
i=0
# обработать
i += 1
# обработать
i += 1
# обработать
i += 1
# обработать
i += 1
# обработать
Обработка в цикле:
A[i]
i=0
while i < N:
# обработать A[i]
i += 1
A[i]
Цикл с переменной:
A[i]
for i in range(N):
# обработать A[i]
A[i]
A[i]
i += 1
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

55. Перебор элементов

Алгоритмизация и программирование, язык Python
55
Перебор элементов
Общая схема (можно изменять A[i]):
for i in range(N):
... # сделать что-то с A[i]
for i in range(N):
A[i] += 1
Если не нужно изменять A[i]:
for x in A:
... # сделать что-то с x
x = A[0], A[1], ..., A[N-1]
for x in A:
print ( x )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

56. Что выведет программа?

Алгоритмизация и программирование, язык Python
56
Что выведет программа?
A = [2, 3, 1, 4, 6, 5]
print( A[3] )
# 4
print( A[0]+2*A[5] )
# 12
A[1] = A[0] + A[5]
print( 3*A[1]+A[4] )
# 7
# 27
A[2] = A[1]*A[4]
print( 2*A[1]+A[2] )
# 18
# 24
for k in range(6):
# [4,5,3,6,8,7]
A[k] += 2
print( 2*A[3]+3*A[4] ) # 36
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

57. Подсчёт нужных элементов

Алгоритмизация и программирование, язык Python
57
Подсчёт нужных элементов
Задача. В массиве записаны данные о росте
баскетболистов. Сколько из них имеет рост больше
180 см, но меньше 190 см?
?
Как решать?
count = 0
for x in A:
if 180 < x and x < 190:
count += 1
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

58. Перебор элементов

Алгоритмизация и программирование, язык Python
58
Перебор элементов
Задача. Найти сумму чётных элементов массива.
summa = 0
for x in A:
if x % 2 == 0:
summa += x
print ( summa )
?
Как определить, что
элемент чётный?
или так:
B = [x for x in A
if x % 2 == 0]
print ( sum(B) )
сумма массива B
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

59. Среднее арифметическое

Алгоритмизация и программирование, язык Python
59
Среднее арифметическое
Задача. Найти среднее арифметическое элементов
массива, которые оканчиваются на цифру 5.
count = 0
summa = 0
for x in A:
if x % 10 == 5:
count += 1
summa += x
print ( summa/count )
или так:
B = [ x for x in A ]
if x % 10 == 5]
print ( sum(B)/len(B) )
К.Ю. Поляков, 2015
?
Как определить, что
оканчивается на 5?
среднее
арифметическое
отбираем нужные
http://kpolyakov.spb.ru

60. Поиск в массиве

Алгоритмизация и программирование, язык Python
60
Поиск в массиве
Найти элемент, равный X:
i=0
while A[i] != X:
Что плохо?
i += 1
print ( "A[", i, "]=", X, sep = "" )
?
i=0
while i < N and A[i] != X:
i += 1
Что если такого нет?
if i < N:
print ( "A[", i, "]=", X, sep = "" )
else:
print ( "Не нашли!" )
?
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

61. Поиск в массиве

Алгоритмизация и программирование, язык Python
61
Поиск в массиве
Вариант с досрочным выходом:
номер найденного
элемента
nX = -1
for i in range ( N ):
if A[i] == X:
nX = i
досрочный
break
выход из цикла
if nX >= 0:
print ( "A[", nX, "]=", X, sep = "" )
else:
print ( "Не нашли!" )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

62. Поиск в массиве

Алгоритмизация и программирование, язык Python
63
Максимальный элемент
M = A[0]
for i in range(1,N):
if A[i] > M:
Если range(N)?
M = A[i]
print ( M )
?
Варианты в стиле Python:
M = A[0]
for x in A:
if x > M:
M=x
?
Как найти его номер?
M = max ( A )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

63. Максимальный элемент

Алгоритмизация и программирование, язык Python
64
Максимальный элемент и его номер
M = A[0]; nMax = 0
for i in range(1,N):
if A[i] > M:
Что можно улучшить?
M = A[i]
nMax = ii
print ( "A[", nMax, "]=", M, sep = "" )
?
!
По номеру элемента можно найти значение!
nMax = 0
for i in range(1,N):
if A[i] > A[nMax]
A[nMax]:
nMax = i
print ( "A[", nMax, "]=", A[nMax]
A[nMax], sep = "" )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

64. Максимальный элемент и его номер

Алгоритмизация и программирование, язык Python
65
Максимальный элемент и его номер
Вариант в стиле Python:
M = max(A)
nMax = A.index(M)
print ( "A[", nMax, "]=", M, sep = "" )
номер заданного
элемента (первого из…)
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

65. Максимальный элемент и его номер

Алгоритмизация и программирование, язык Python
66
Два типа подпрограмм
Подпрограммы
Процедуры
выполняют действия
?
Функции
+ возвращают некоторый
результат
Процедура или функция?
а) рисует окружность на экране
б) определяет площадь круга
в) вычисляет значение синуса угла
г) изменяет режим работы программы
д) возводит число x в степень y
е) включает двигатель автомобиля
ж) проверяет оставшееся количество бензина в баке
з) измеряет высоту полёта самолёта
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

66. Два типа подпрограмм

Алгоритмизация и программирование, язык Python
67
Простая процедура
define – определить
def printLine():
print("----------")
?
Что делает?
...
вызов
printLine()
процедуры
...
какие-то
операторы
можно вызывать сколько угодно раз
нет дублирования кода
изменять – в одном месте
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

67. Простая процедура

Алгоритмизация и программирование, язык Python
68
Линии разной длины
def printLine5():
print("-----")
?
Как улучшить?
def printLine10():
print("----------")
def printLine10():
print("-"*10)
параметр
процедуры
def printLine( n ):
print("-"*n)
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

68. Линии разной длины

Алгоритмизация и программирование, язык Python
69
Процедура с параметром
Параметр – величина, от
которой зависит
работа процедуры.
def printLine( n ):
...
...
printLine(10)
...
printLine(7)
printLine(5)
printLine(3)
К.Ю. Поляков, 2015
?
Что делает?
Аргумент – значение
параметра при
конкретном вызове.
http://kpolyakov.spb.ru

69. Процедура с параметром

Алгоритмизация и программирование, язык Python
70
Несколько параметров
символьная строка
def printLine(c, n):
print(c*n)
?
?
Что изменилось?
Как вызывать?
printLine( "+", 5 )
printLine( "+-+", 5 )
printLine( 5, "+" )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

70. Несколько параметров

Алгоритмизация и программирование, язык Python
71
Что такое функция?
Функция — это вспомогательный алгоритм, который
возвращает результат (число, строку символов и др.).
Задача. Написать функцию, которая вычисляет среднее
арифметическое двух целых чисел.
цел a, b
исходные данные
целые
def Avg(a, b):
return (a+b)/2
Avg
вещ r
результат
?
Тип результата?
результат
функции
return – вернуть
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

71. Что такое функция?

Алгоритмизация и программирование, язык Python
72
Как вызывать функцию?
Запись результата в переменную:
sr = Avg(5, 8)
6.5
x = 2; y = 5
sr = Avg(x, 2*y+8)
Вывод на экран:
x = 2; y = 5
sr = Avg(x, y+3)
print( Avg(12,7) )
print( sr + Avg(x,12) )
К.Ю. Поляков, 2015
?
Чему равно?
10
5
9.5
12
http://kpolyakov.spb.ru

72. Как вызывать функцию?

Алгоритмизация и программирование, язык Python
73
Как вызывать функцию?
Использование в условных операторах:
a = int(input())
b = int(input())
if Avg(a,b) > 5:
print("Да!")
Когда печатает «Да»?
else:
print("Нет!");
?
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

73. Как вызывать функцию?

Алгоритмизация и программирование, язык Python
74
Как вызывать функцию?
Использование в циклах:
a = int(input())
b = int(input())
ввод двух чисел в
while Avg(a,b) > 0:
одной строчке
print("Нет!")
a,b = map(int, input().split())
print("Угадал!");
?
К.Ю. Поляков, 2015
Когда напечатает «Угадал»?
http://kpolyakov.spb.ru

74. Как вызывать функцию?

Алгоритмизация и программирование, язык Python
75
Максимум из двух (трёх) чисел
Задача. Составить функцию, которая определяет
наибольшее из двух целых чисел.
цел a, b
исходные данные
def Max(a,
if a > b
return
else:
return
К.Ю. Поляков, 2015
b):
then
a
цел r
результат
Max
?
Как с её помощью найти
максимум из трёх?
b
def Max3(a, b, c):
return Max( Max(a,b), c )
http://kpolyakov.spb.ru

75. Максимум из двух (трёх) чисел

Алгоритмизация и программирование, язык Python
76
Сумма цифр числа
Задача. Составить функцию, которая вычисляет сумму
значений цифр натурального числа.
def sumDigits( N ):
sum = 0
# накапливаем сумму с 0
while N!=0:
d = N % 10
# выделим последнюю цифру
sum += d
# добавим к сумме
N = N // 10 # удалим последнюю цифру
return sum
Вызов процедуры:
m = int(input())
s = sumDigits( m )
print( s )
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

76. Сумма цифр числа

Алгоритмизация и программирование, язык Python
77
Логические функции
Логическая функция — это функция, возвращающая
логическое значения (да или нет).
• можно ли применять операцию?
• успешно ли выполнена операция?
• обладают ли данные каким-то свойством?
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

77. Логические функции

Алгоритмизация и программирование, язык Python
78
Логические функции
Задача. Составить функцию, которая возвращает
«True», если она получила чётное число и «False»,
если нечётное.
def Even( N ):
if N % 2 == 0:
def Even( N ):
return True
return (N % 2 == 0)
else:
return False
К.Ю. Поляков, 2015
http://kpolyakov.spb.ru
English     Русский Rules