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

Python

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

1
Программирование
на языке Python
Простейшие программы
Вычисления
Ветвления
Символьные строки
Циклические алгоритмы
Массивы (списки)
Поиск в массиве
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

2
Программирование
на языке Python
Простейшие программы
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

3. Вывод на экран

3
Алгоритмизация и программирование, язык Python
Вывод на экран
print ( "2+2=?" )
print ( "Ответ: 4" )
автоматический
переход на новую
строку
Протокол:
2+2=?
Ответ: 4
© К.Ю. Поляков, 2015
print ( '2+2=?' )
print ( 'Ответ: 4' )
http://kpolyakov.spb.ru

4. Переменные

4
Алгоритмизация и программирование, язык Python
Переменные
Переменная – это величина, имеющая имя, тип
и значение. Значение переменной можно
изменять во время работы программы.
Значение
Имя
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

6
Алгоритмизация и программирование, язык Python
Типы переменных
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

7. Как записать значение в переменную?

7
Алгоритмизация и программирование, язык Python
Как записать значение в переменную?
! При записи нового значения
оператор
присваивания
a = 5
a = 7
старое удаляется из памяти!
a
5
7
Оператор – это команда языка
программирования (инструкция).
Оператор присваивания – это команда для
присваивания нового значения переменной.
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

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

10. Изменение значений переменной

Алгоритмизация и программирование, язык Python
10
Изменение значений переменной
a = 5
b = a + 2
a = (a + 2)*(b – 3)
b = b + 1
28
a
b
© К.Ю. Поляков, 2015
=(5+2)*(7-3)
5
7
=5+2
8
=7+1
http://kpolyakov.spb.ru

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

11
Алгоритмизация и программирование, язык Python
Вывод данных
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

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

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

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

13
Алгоритмизация и программирование, язык Python
Сложение чисел: полное решение
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

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

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

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

15
Алгоритмизация и программирование, язык Python
Арифметическое выражения
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

16. Деление

16
Алгоритмизация и программирование, язык Python
Деление
Классическое деление:
a = 9; b = 6
x = 3 / 4
# = 0.75
x = a / b
# = 1.5
x = -3 / 4 # = -0.75
x = -a / b # = -1.5
Целочисленное деление (округление «вниз»!):
a = 9; b = 6
x = 3 // 4
# = 0
x = a // b
# = 1
x = -3 // 4 # = -1
x = -a // b # = -2
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

17. Остаток от деления

Алгоритмизация и программирование, язык Python
17
Остаток от деления
% – остаток от деления
d = 85
b = d // 10
# 8
a = d % 10
# 5
d = a % b
# 5
d = b % a
# 3
a = 15
b = 19
d = a // b
a = a % b
© К.Ю. Поляков, 2015
# 0
# 15
http://kpolyakov.spb.ru

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

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

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

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

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

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

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

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

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

22
Алгоритмизация и программирование, язык Python
Условный оператор: неполная форма
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

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

23
Алгоритмизация и программирование, язык Python
Условный оператор
if a < b:
с = a
a = b
b = c
? Что делает?
b
a
4
6
2
6
4
? Можно ли обойтись
без переменной c?
Решение в стиле Python:
?
4
c
a, b = b, a
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31
Программирование
на языке Python
Символьные строки
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

33
Алгоритмизация и программирование, язык Python
Символьные строки
Вывод символа на экран:
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. Символьные строки

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

35. Срезы

35
Алгоритмизация и программирование, язык Python
Срезы
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. Срезы строк

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

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

37
Алгоритмизация и программирование, язык Python
Операции со строками
Срезы с отрицательными индексами:
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. Операции со строками

38
Алгоритмизация и программирование, язык Python
Операции со строками
Удаление:
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
Программирование
на языке Python
Циклические алгоритмы
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

40. Что такое цикл?

40
Алгоритмизация и программирование, язык Python
Что такое цикл?
Цикл – это многократное выполнение одинаковых
действий.
Два вида циклов:
• цикл с известным числом шагов (сделать 10 раз)
• цикл с неизвестным числом шагов (делать, пока не
надоест)
Задача. Вывести на экран 10 раз слово «Привет».
? Можно ли решить известными методами?
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

41. Повторения в программе

Алгоритмизация и программирование, язык Python
41
Повторения в программе
print("Привет")
print("Привет")
...
print("Привет")
? Что плохо?
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

42. Блок-схема цикла

42
Алгоритмизация и программирование, язык Python
Блок-схема цикла
начало
сделали 10 раз?
да
конец
нет
print("Привет!")
тело цикла
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

43. Как организовать цикл?

43
Алгоритмизация и программирование, язык Python
Как организовать цикл?
счётчик = 0
k=0
пока счётчик < 10:
while k < 10:
print("Привет")
print ( "Привет" )
увеличить счётчик на 1
k += 1
? Как по-другому?
счётчик = 10
k = 10
пока счётчик > 0:
while k > 0:
print("Привет")
print ( "Привет" )
уменьшить счётчик на 1
k -= 1
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

44
Алгоритмизация и программирование, язык Python
Сколько раз выполняется цикл?
a = 4; b = 6
while a < b: a += 1
2 раза
a=6
a = 4; b = 6
while a < b: a += b
1 раз
a = 10
a = 4; b = 6
while a > b: a += 1
0 раз
a=4
a = 4; b = 6
while a < b: b = a - b
1 раз
b = -2
a = 4; b = 6
while a < b: a -= 1
зацикливание
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

45
Алгоритмизация и программирование, язык Python
Цикл с условием
Задача. Определить количество цифр в десятичной
записи целого положительного числа, записанного в
переменную 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

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

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

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

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

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

Алгоритмизация и программирование, язык Python
48
Проверка символов
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

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

49
Алгоритмизация и программирование, язык Python
Цикл с переменной
Задача. Вывести 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

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

50
Алгоритмизация и программирование, язык Python
Цикл с переменной
Задача. Вывести все степени двойки от 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

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

51
Алгоритмизация и программирование, язык Python
Цикл с переменной: другой шаг
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

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

52
Алгоритмизация и программирование, язык Python
Сколько раз выполняется цикл?
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

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

53
Программирование
на языке Python
Массивы (списки)
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

55
Алгоритмизация и программирование, язык Python
Что такое массив?
! Массив = таблица!
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

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

56
Алгоритмизация и программирование, язык Python
Массивы в 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

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

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

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

58
Алгоритмизация и программирование, язык Python
Вывод массива на экран
Как список:
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

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

Алгоритмизация и программирование, язык Python
59
Ввод массива с клавиатуры
Создание массива:
N = 10
A = [0]*N
Ввод по одному элементу в строке:
for i in range(N):
A[i] = int( input() )
или кратко:
A = [int(input())
for i in range(N)]
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

60
Алгоритмизация и программирование, язык Python
Ввод массива с клавиатуры
Ввод всех чисел в одной строке:
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

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

61
Алгоритмизация и программирование, язык Python
Как обработать все элементы массива?
Создание массива:
N=5
A = [0]*N
Обработка:
# обработать A[0]
# обработать A[1]
# обработать A[2]
# обработать A[3]
# обработать A[4]
? 1) если N велико (1000, 1000000)?
2) при изменении N программа не должна меняться!
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

Алгоритмизация и программирование, язык Python
63
Перебор элементов
Общая схема (можно изменять 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

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

64
Алгоритмизация и программирование, язык Python
Что выведет программа?
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

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

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

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

66
Алгоритмизация и программирование, язык Python
Перебор элементов
Задача. Найти сумму чётных элементов массива.
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

67. Как работает цикл?

67
Алгоритмизация и программирование, язык Python
Как работает цикл?
summa = 0
for x in A:
if x % 2 == 0:
summa += x
A
4
x
1
8
6
3
4
summa
18
10
4
0
© К.Ю. Поляков, 2015
3
6
8
1
http://kpolyakov.spb.ru

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

68
Алгоритмизация и программирование, язык Python
Среднее арифметическое
Задача. Найти среднее арифметическое элементов
массива, которые оканчиваются на цифру 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

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

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

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

70
Алгоритмизация и программирование, язык Python
Поиск в массиве
Найти элемент, равный 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

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

71
Алгоритмизация и программирование, язык Python
Поиск в массиве
Вариант с досрочным выходом:
номер найденного
элемента
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

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

73
Алгоритмизация и программирование, язык Python
Максимальный элемент
Задача: найти в массиве максимальный элемент.
Алгоритм:
Решение:
1) считаем, что первый элемент – максимальный
2) просмотреть остальные элементы массива:
если очередной элемент > M,
то записать A[i] в M
3) вывести значение M
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

74
Алгоритмизация и программирование, язык Python
Максимальный элемент
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

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

75
Алгоритмизация и программирование, язык Python
Максимальный элемент и его номер
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

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

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