Простейшая программа
Вывод на экран
Зачем нужны переменные?
Имена переменных
Работа с переменными
Работа с переменными
Ввод с клавиатуры
Ввод с клавиатуры
Ввод вещественных чисел
Задачи
Арифметические выражения
Порядок выполнения операций
Деление
Частное и остаток
Частное и остаток
Сокращенная запись операций
Форматный вывод
Вещественные числа (сложение)
Операции с вещественными числами
Математические функции
Случайные и псевдослучайные числа
Случайные и псевдослучайные числа
Датчик случайных чисел
Датчик случайных чисел
Программирование (Python)
Выбор наибольшего из двух чисел
Ввод двух чисел в одной строке
Вариант 1. Программа
Выбор наибольшего из двух чисел-2
Вариант 2. Программа
Знаки отношений
Вложенные условные операторы
Каскадное ветвление
Каскадное ветвление
Задачи (без функций min и max!)
Сложные условия
Плохое решение
Хорошее решение (операция «И»)
Сложные условия: «ИЛИ»
Ещё пример
Сложные условия: «НЕ»
Простые и сложные условия
Порядок выполнения операций
Логические переменные
Зачем нужен цикл?
Как работает цикл?
Ещё один вариант
Цикл с предусловием
Сколько раз выполняется цикл?
Цикл по переменной
Цикл по переменной
Цикл по переменной
Проверка числа на простоту
Проверка числа на простоту
Проверка числа на простоту
Программирование (Python)
Что такое массив?
Обращение к элементу массива
Обращение к элементу массива
Создание массива
Что неверно?
Перебор элементов массива
Заполнение массива
Заполнение массива в обратном порядке
Заполнение массива в обратном порядке
Вывод массива на экран
Вывод массива на экран (Python)
Ввод с клавиатуры
Ввод с клавиатуры (Python)
Заполнение случайными числами
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
Программирование (Python)
Сумма элементов массива
Сумма элементов массива (Python)
Сумма не всех элементов массива
Сумма не всех элементов массива
Задачи
Подсчёт элементов по условию
Подсчёт элементов по условию (Python)
Среднее арифметическое
Среднее арифметическое
Среднее арифметическое (Python)
Задачи
Перестановка элементов массива
Перестановка пар соседних элементов
Перестановка пар соседних элементов
Перестановка пар соседних элементов
Реверс массива
Реверс массива
Задачи
Задачи
Поиск максимального элемента
Поиск максимального элемента
Поиск максимального элемента
Поиск максимального элемента (Python)
Номер максимального элемента
Номер максимального элемента
Задачи (без min и max)
Задачи
Обработка потока данных: максимум
Поиск максимума (минимума) в потоке
Поиск максимума (минимума)
Поиск максимума (минимума)
Поиск максимума (минимума) – II
Максимум не из всех
Минимум не из всех
Если диапазон неизвестен…
Задачи
Задачи
Задачи
Программирование (Python)
Что такое символьная строка?
Символьные строки
Сравнение строк
Сравнение строк
Обращение к символу по номеру
Посимвольная обработка строк
Цикл перебора символов
Задачи
Задачи
Операции со строками
Срезы строк (выделение части строки)
Срезы строк
Операции со строками
Поиск в строках
Задачи
Задачи
Преобразования «строка»  «число»
Задачи
Задачи
Подсчёт количества символов
Другое решение
Задачи
Задачи
Задачи
Самая длинная цепочка
Самая длинная цепочка
Самая длинная цепочка
Задачи
Задачи
Задачи
Метод замены символов
Метод замены символов
Метод замены символов
Метод замены символов
Задачи
Задачи
Задачи
Конец фильма
5.19M
Категория: ПрограммированиеПрограммирование

8-3py_Основы программирования (Python)

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

Программирование (Python), 8 класс
1
Простейшая программа
# Это пустая программа
? Что делает эта программа?
комментарии после #
не обрабатываются
кодировка utf-8
по умолчанию)
# coding: utf-8
# Это пустая программа
"""
Это тоже комментарий
"""
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
2
Вывод на экран
оператор
вывода
Оператор — это команда
языка программирования.
print( "Привет!" )
print( "Привет", Вася! )
? Что плохо?
print( "Привет, Вася!" )
вся строка в
кавычках
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

3. Зачем нужны переменные?

Программирование (Python), 8 класс
3
Зачем нужны переменные?
# ввести два числа
Где запомнить?
# вычислить их сумму
# вывести сумму на экран
Переменная — это величина, которая имеет имя, тип и
значение. Значение переменной может изменяться во
время выполнения программы.
a
b
c
ячейки памяти
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

5. Работа с переменными

Программирование (Python), 8 класс
5
Работа с переменными
Присваивание (запись значения)
a = 5
a = 5
a = 18
оператор
присваивания
a ←5
? Что будет храниться в a?
Вывод на экран
print(a) ? В чём разница?
с = 14
print(c)
с = 14
print("с")
14
c
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

6. Работа с переменными

Программирование (Python), 8 класс
6
Работа с переменными
Изменение значения
i = i + 1
a = 4
b = 7
a = a + 1
b = b + 1
a = a + b
b = b + a
a = a + 2
b = b + a
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
увеличить на 1
a
4
b
i ← i + 1
Python:
a, b = 4, 7
7
5
8
13
21
15
36
a += 1
b += 1
a += b
b += a
a += 2
b += a
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
7
Ввод с клавиатуры
Цель – изменить исходные данные, не меняя программу.
5
a = input()
! 1. Программа ждет, пока пользователь введет
значение и нажмет Enter.
2. Введенное значение записывается в
переменную a.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

9. Ввод вещественных чисел

Программирование (Python), 8 класс
9
Ввод вещественных чисел
print( "Введите число:" )
x = float (input())
или так:
x = float (input("Введите число:"))
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

10. Задачи

Программирование (Python), 8 класс
10
Задачи
«A»: Ввести три числа, найти их сумму.
Пример:
Введите три числа:
4
5
7
4+5+7=16
«B»: Ввести три числа, найти их сумму и
произведение.
Пример:
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
11
Арифметические выражения
c b 1
a
d
2
Линейная запись (в одну строку):
a = (c + b - 1) / 2 * d
Операции: + –
* – умножение
/ – деление
** – возведение в степень (x2 x**2)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

12. Порядок выполнения операций

Программирование (Python), 8 класс
12
Порядок выполнения операций
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
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
c b5 3 1
a
d
2
перенос на
следующую строку
перенос внутри
скобок разрешён
http://kpolyakov.spb.ru

13. Деление

Программирование (Python), 8 класс
13
Деление
Классическое деление:
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
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

14. Частное и остаток

Программирование (Python), 8 класс
14
Частное и остаток
// – деление нацело (остаток отбрасывается)
% – остаток от деления
175 сек = 2 мин 55 сек ? Как получить 2 и 55?
t = 175
m = t // 60 # 2
s = t % 60 # 55
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

15. Частное и остаток

Программирование (Python), 8 класс
15
Частное и остаток
? Что получится?
n = 123
d = n // 10 # 12
k = n % 10 # 3
При делении на 10 нацело отбрасывается последняя
цифра числа.
Остаток от деления на 10 – это последняя цифра числа.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
16
Сокращенная запись операций
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
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
a += 1
увеличение на 1
http://kpolyakov.spb.ru

17. Форматный вывод

Программирование (Python), 8 класс
17
Форматный вывод
a, b = 1, 2
print( f"{a}+{b}={a+b}" )
1+2=3
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

18. Вещественные числа (сложение)

Программирование (Python), 8 класс
18
Вещественные числа (сложение)
print ( "Введите два числа: " )
a = float ( input() )
b = float ( input() )
c=a+b
print ( f"{a}+{b}={c}" )
Введите два числа:
1.25
2.3
1.25+2.3=3.55
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

19. Операции с вещественными числами

Программирование (Python), 8 класс
19
Операции с вещественными числами
int – целая часть числа
x=1.6
print( int(x) )
1
round – ближайшее целое число
x=-1.2
-1
print( round(x) )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

20. Математические функции

Программирование (Python), 8 класс
20
Математические функции
загрузить
модуль math
= подключить математические
функции
import math
# квадратный корень
print( math.sqrt(25) )
r = 50 # радиус окружности
print( 2*math.pi*r )
Что считаем?
?
print( math.pi*r**2 )
число
округление
вверх
print( math.ceil(2.123) ) # 3
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

21. Случайные и псевдослучайные числа

Программирование (Python), 8 класс
21
Случайные и псевдослучайные числа
Случайные явления
• встретил слона – не встретил слона
• жеребьёвка на соревнованиях
• лотерея
• случайная скорость (направление выстрела ) в игре
• …
Случайные числа — это последовательность чисел, в
которой невозможно предсказать следующее число,
даже зная все предыдущие.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

22. Случайные и псевдослучайные числа

Программирование (Python), 8 класс
22
Случайные и псевдослучайные числа
! Компьютер неслучаен!
Псевдослучайные числа — похожи на случайные, но
строятся по формуле.
следующее
предыдущее
Xn+1= (a*Xn+b) % c # от 0 до c-1
Xn+1= (Xn+3) % 10
#
от 0 до 9
X = 0 3 6 9 2 5 8
зерно
8 1 4 7 0
зацикливание
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

23. Датчик случайных чисел

Программирование (Python), 8 класс
23
Датчик случайных чисел
Целые числа на отрезке:
подключить функцию randint
из модуля random
from random import randint
K = randint(1, 6) # отрезок [1,6]
L = randint(1, 6) # это уже другое число!
англ. integer – целый
random – случайный
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

24. Датчик случайных чисел

Программирование (Python), 8 класс
24
Датчик случайных чисел
Вещественные числа:
from random import random, uniform
x = random()
# полуинтервал [0,1)
y = 7*random()
# полуинтервал [0,7)
z = 7*random()+5 # полуинтервал [5,12)
Вещественные числа на отрезке [a, b]:
from random import uniform
x = uniform(1.5, 2.8)
# [1,5; 2,8]
y = uniform(5.25, 12.75) # [5,25; 12,75]
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

25. Программирование (Python)

25
Программирование
(Python)
§ 19. Ветвления
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

26. Выбор наибольшего из двух чисел

Программирование (Python), 8 класс
26
Выбор наибольшего из двух чисел
Задача: изменить порядок действий в зависимости от
выполнения некоторого условия.
полная
форма
да
нет
ветвления
a > b?
M=a
M=b
вывод M
отступы
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Если a = b?
if a > b:
M = a
else:
M = b
http://kpolyakov.spb.ru

27. Ввод двух чисел в одной строке

Программирование (Python), 8 класс
27
Ввод двух чисел в одной строке
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() )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

28. Вариант 1. Программа

Программирование (Python), 8 класс
28
Вариант 1. Программа
print("Введите два целых числа")
a, b = map( int, input().split() )
if a > b:
M = a
полная форма
условного
else:
оператора
M = b
print("Наибольшее число", M)
Решение в стиле Python:
M = max(a, b)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
M = a if a > b else b
http://kpolyakov.spb.ru

29. Выбор наибольшего из двух чисел-2

Программирование (Python), 8 класс
29
Выбор наибольшего из двух чисел-2
начало
ввод a,b
M =a
да
b > a?
нет
неполная
форма
ветвления
M =b
вывод M
конец
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

30. Вариант 2. Программа

Программирование (Python), 8 класс
30
Вариант 2. Программа
print("Введите два целых числа")
a, b = map( int, input().split() )
M = a
неполная форма
if b > a:
условного
оператора
M = b
print("Наибольшее число", M)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
31
Знаки отношений
> <
больше, меньше
>=
больше или равно
<=
меньше или равно
==
равно
!=
не равно
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

Программирование (Python), 8 класс
33
Каскадное ветвление
if a > b:
print("Андрей старше")
elif a == b:
print("Одного возраста")
else:
print("Борис старше")
! elif = else if
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

35. Задачи (без функций min и max!)

Программирование (Python), 8 класс
35
Задачи (без функций min и max!)
«A»: Ввести два целых числа, найти наибольшее и
наименьшее из них.
Пример:
Введите два целых числа:
1 5
Наибольшее число 5
Наименьшее число 1
«B»: Ввести четыре целых числа, найти наибольшее из
них.
Пример:
Введите четыре целых числа:
1 5 4 3
Наибольшее число 5
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
36
Сложные условия
Задача. Фирма набирает сотрудников от 25 до 40 лет
включительно. Ввести возраст человека и определить,
подходит ли он фирме (вывести ответ "подходит" или
"не подходит").
Особенность: надо проверить, выполняются ли два
условия одновременно:
возраст 25
возраст 40
? Можно ли решить известными методами?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

37. Плохое решение

Программирование (Python), 8 класс
37
Плохое решение
print("Введите ваш возраст")
v = int(input())
if v >= 25:
вложенный
условный
if v <= 40:
оператор
print("Подходит!")
else:
print("Не подходит.")
else:
print("Не подходит.")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

38. Хорошее решение (операция «И»)

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

39. Сложные условия: «ИЛИ»

Программирование (Python), 8 класс
39
Сложные условия: «ИЛИ»
Задача. Самолёт летает по понедельникам и четвергам.
Ввести номер дня недели и определить, летает ли в
этот день самолёт.
Особенность: надо проверить, выполняется ли одно из
двух условий:
день = 1
день = 4
if d == 1 or d == 4 :
print("Летает")
else:
print("Не летает")
сложное
условие
or «ИЛИ»: выполнение хотя бы одного
из двух условий!
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

40. Ещё пример

Программирование (Python), 8 класс
40
Ещё пример
Задача. Фирма набирает сотрудников от 25 до 40 лет
включительно. Ввести возраст человека и определить,
подходит ли он фирме (вывести ответ "подходит" или
"не подходит"). Использовать «ИЛИ».
if v < 25 or v > 40 :
print("не подходит")
else:
print("подходит")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

41. Сложные условия: «НЕ»

Программирование (Python), 8 класс
41
Сложные условия: «НЕ»
if not(a < b):
print("Cтарт!")
? Как без «НЕ»?
not «НЕ»: если выполняется обратное условие
if a >= b:
print("Cтарт!")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

42. Простые и сложные условия

Программирование (Python), 8 класс
42
Простые и сложные условия
Простые условия (отношения)
<
<=
>
>=
==
равно
!=
не равно
Сложное условие – это условие, состоящее из
нескольких простых условий (отношений),
связанных с помощью логических операций:
• and – одновременное выполнение условий
x >= 25 and x <= 40
• or – выполнение хотя бы одного из условий
x <= 25 or x >= 40
• not – отрицание, обратное условие
x <=
not (x > 25)
???25
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

43. Порядок выполнения операций

Программирование (Python), 8 класс
43
Порядок выполнения операций
• выражения в скобках
• <, <=, >, >=, =, !=
• not
• and
• or
4
1
6
2
5
3
if not a > 2 or c != 5 and b < a:
...
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

44. Логические переменные

Программирование (Python), 8 класс
44
Логические переменные
b = True
b = False
type(b)
только два
возможных
значения
<class 'bool'>
логическая (булевская)
переменная
Джордж Буль
Пример:
freeDay = (d==6 or d==7)
...
if not freeDay:
print("Рабочий день.")
else:
print("Выходной!")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

45. Зачем нужен цикл?

Программирование (Python), 8 класс
45
Зачем нужен цикл?
Задача. Вывести 5 раз «Привет!».
print("Привет")
print("Привет")
print("Привет")
print("Привет")
print("Привет")
Цикл «N раз»:
сделай 5 раз
print("Привет")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? А если 5000?
такого оператора нет
в Python!
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
46
Как работает цикл?
! Нужно запоминать, сколько раз цикл уже выполнен!
переменная-счётчик
ещё не делали
счётчик = 0
пока счётчик < 5
print("Привет")
счётчик +=
= счётчик
+ 1
счётчик
1
сделали ещё раз
c = 0
while c < 5:
print("Привет")
c += 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

47. Ещё один вариант

Программирование (Python), 8 класс
47
Ещё один вариант
Идея: запоминать, сколько шагов осталось.
счётчик = 5
пока счётчик > ???
0
print("Привет")
счётчик -=
= счётчик
???
1
1
c = 5
while c > 0:
print("Привет")
c -= 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Как записать иначе
последнюю строку?
http://kpolyakov.spb.ru

48. Цикл с предусловием

Программирование (Python), 8 класс
48
Цикл с предусловием
• условие проверяется при входе в цикл
• как только условие становится ложным, работа цикла
заканчивается
• если условие ложно в самом начале, цикл не
выполняется ни разу
while условие:
...
тело цикла
? Если условие никогда не станет ложно?
while True:
...
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
бесконечный цикл
(зацикливание)
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
49
Сколько раз выполняется цикл?
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
зацикливание
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
50
Цикл по переменной
Задача. Вывести на экран степени числа 2 от 20 до 210.
k = 0
! Работа с k в трёх местах!
N = 1
Идея: собрать всё вместе.
while k <= 10 :
print(N)
N = N*2
не включая 11!
с нуля!
k = k + 1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
N = 1
for k in range(11)
range(11):
print(N)
N = N*2
сделать 11 раз
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
51
Цикл по переменной
for k in range(11):
print(k)
? Что выведет?
for k in [0,1,2,3,4,5,6,7,8,9,10]:
print(k)
0
1
2

10
Начать на с 0, а с 1:
for k in [1,2,3,4,5,6,7,8,9,10]:
print(k)
начальное
значение
for k in range( 1 ,11):
print(k)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
52
Цикл по переменной
Задача. Найти сумму чисел от 1 до 1000.
S = 0
for i in range(1,1001):
S += i
Задача. Вывести квадраты чисел от 10 до 1 по убыванию.
for k in [10,9,8,7,6,5,4,3,2,1]:
print(k*k)
не включая 0
шаг
for k in range(10,0,–1):
print(k*k)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

53. Проверка числа на простоту

Программирование (Python), 8 класс
53
Проверка числа на простоту
Задача. Ввести натуральное число N и проверить,
является ли оно простым.
? Что такое простое число?
проверять все
? Как проверить?
от 2 до N-1
26: делится на 2? да составное
27: делится на 2? нет
делится на 3? да составное
29: делится на 2? нет
делится на 3? нет
простое

делится на 28? нет
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

54. Проверка числа на простоту

Программирование (Python), 8 класс
54
Проверка числа на простоту
N = int(input("Введите число:"))
count = 0
от 2 до N-1
for i in range(2,N):
if N % i == 0:
? Как определить,
count += 1
что простое?
if count == 0:
print( f"{N} – простое" )
else:
print( f"{N} – составное" )
? Как ускорить?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

55. Проверка числа на простоту

Программирование (Python), 8 класс
55
Проверка числа на простоту
N = int(input("Введите число:"))
count = 0
от 2 до N-1
for i in range(2,N):
if N % i == 0:
count += 1
break
выход из цикла
if count == 0:
print( f"{N} – простое" )
else:
print( f"{N} – составное" )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

56. Программирование (Python)

56
Программирование
(Python)
§ 21. Массивы
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

58. Обращение к элементу массива

Программирование (Python), 8 класс
58
Обращение к элементу массива
НОМЕР
A
элемента массива
(ИНДЕКС)
массив
0
1
5
10
A[0]
A[1]
22
15
15
3
4
20
25
ЗНАЧЕНИЕ
A[2]
A[3]
A[4]
элемента массива
Индекс элемента — это значение, которое указывает на
конкретный элемент массива.
! Нумерация с нуля!
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

59. Обращение к элементу массива

Программирование (Python), 8 класс
59
Обращение к элементу массива
ИНДЕКС элемента массива: 2
A[2]
ЗНАЧЕНИЕ элемента массива
0
1
2
3
4
23
12
7
43
51
i = 1
A[2] = A[i] + 2*A[i-1] + A[2*i+1]
print( A[2]+A[4] )
? Что получится?
A[2] = A[1] + 2*A[0] + A[3]
print( A[2]+A[4] )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
101
152
http://kpolyakov.spb.ru

60. Создание массива

Программирование (Python), 8 класс
60
Создание массива
A = [11, 22, 35, 41, 53]
11
22
35
41
53
A = [11, 22] + [35, 41] + [53]
A = [11]*5
11
11
11
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
11
11
http://kpolyakov.spb.ru

61. Что неверно?

Программирование (Python), 8 класс
61
Что неверно?
A = [1, 2, 3, 4, 5]
x = 1
? Что плохо?
print( A[x-8] )
A[x+4] = A[x-1] + A[2*x]
print( A[-7] )
A[5] = A[0] + A[2]
Выход за границы массива — это обращение к
элементу с индексом, который не существует в
массиве.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

62. Перебор элементов массива

Программирование (Python), 8 класс
62
Перебор элементов массива
N = 10
A = [0]*N
# память уже выделена
Перебор элементов: просматриваем все элементы
массива и, если нужно, выполняем с каждым из них
некоторую операцию.
for i in range(N):
# здесь работаем с A[i]
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
63
Заполнение массива
[0, 2, 3, …, N-1]
for i in range(N):
A[i] = i
? Что произойдёт?
В развёрнутом виде
A[0] = 0
A[1] = 1
A[2] = 2
...
A[N-1] = N-1
0
1
2
...
N-1
В стиле Python:
A = [ i for i in range(N) ]
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

64. Заполнение массива в обратном порядке

Программирование (Python), 8 класс
64
Заполнение массива в обратном порядке
N

3
2
A[0] = N
A[1] = N-1
A[2] = N-2
...
A[N-1] = 1
1
X=N
for i in range(N):
A[i] = X
X=X-1
? Как меняется X?
X = N, N-1, …, 2, 1
начальное
значение
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
уменьшение
на 1
http://kpolyakov.spb.ru

65. Заполнение массива в обратном порядке

Программирование (Python), 8 класс
65
Заполнение массива в обратном порядке
N

3
2
A[i] = X
1
? Как связаны i и X?
+1
i
0
1
2
...
N-1
X
N
N-1
N-2
...
1
–1
for i in range(N):
A[i] = N – i
В стиле Python:
A = [ N-i
for i in range(N) ]
! Сумма i и X не меняется!
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
i + X = N
X = N - i
http://kpolyakov.spb.ru

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

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

67. Вывод массива на экран (Python)

Программирование (Python), 8 класс
67
Вывод массива на экран (Python)
[1,2,3,4,5]
print ( *A )
print (1, 2, 3, 4, 5)
разбить список
на элементы
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
1 2 3 4 5
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
68
Ввод с клавиатуры
for i in range(N):
A[i] = int(input())
? Что плохо?
или так:
A = [int(input())
for i in range(N)]
С подсказкой для ввода:
for i in range(N):
s = "A[" + str(i) + "]="
A[i] = int(input(s))
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
A[0] = 5
A[1] = 12
A[2] = 34
A[3] = 56
A[4] = 13
http://kpolyakov.spb.ru

69. Ввод с клавиатуры (Python)

Программирование (Python), 8 класс
70
Заполнение случайными числами
из библиотеки
(модуля) 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) ]
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
71
Обработка элементов массива
N = 10
A = [0]*N
# память уже выделена
for i in range(N):
# здесь работаем с A[i]
Вывести на экран в столбик:
for i in range(N):
print( A[i] )
???
! Что вместо «???»?
Вывести на экран в строчку:
for i in range(N):
print( A[i], end = " " )
???
print( *A )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

71. Обработка элементов массива

Программирование (Python), 8 класс
72
Обработка элементов массива
Вывести числа, на 1 большие, чем A[i]:
for i in range(N):
print( A[i]+1 )
???
! Что вместо «???»?
Вывести последние цифры:
for i in range(N):
print( A[i]%10 )
???
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

72. Обработка элементов массива

Программирование (Python), 8 класс
73
Обработка элементов массива
Заполнить нулями:
for i in range(N):
A[i] = 0
???
! Что вместо «???»?
Увеличить на 1:
for i in range(N):
A[i] += 1
???
Умножить на 2:
for i in range(N):
A[i] *= 2
???
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

73. Обработка элементов массива

74
Программирование
(Python)
§ 22. Алгоритмы обработки
массивов
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

74. Программирование (Python)

Программирование (Python), 8 класс
75
Сумма элементов массива
Задача. Найти сумму элементов массива из N
элементов.
? Какие переменные
нужны?
5
2
8
3
i
s = 0
for i in range(N):
s =
+ A[i]
+=sA[i]
print( s )
s
0
0
1
2
5
7
15
В стиле Python:
3
4
18
19
1
print( sum(A) )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

75. Сумма элементов массива

Программирование (Python), 8 класс
76
Сумма элементов массива (Python)
Задача. Найти сумму элементов массива A.
s = 0
for x in A:
s += x
print( s )
для всех
элементов из A
! Не нужно знать размер!
или так:
print( sum(A) )
встроенная
функция
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

76. Сумма элементов массива (Python)

Программирование (Python), 8 класс
77
Сумма не всех элементов массива
Задача. Найти сумму чётных элементов массива.
? Что делаем с нечётными?
s = 0
for i in range(N):
s
A[i]
if+=
A[i]
% 2 == 0:
print(
s A[i]
)
s +=
print( s )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

77. Сумма не всех элементов массива

Программирование (Python), 8 класс
78
Сумма не всех элементов массива
Задача. Найти сумму чётных элементов массива.
s = 0
for x in A:
if
x %
s +=
x 2 == 0:
s +=
print(
s x
)
print( s )
s
A
4
x
1
8
6
3
4
18
10
4
0
3
6
8
отбираем
в новый
1
массив все нужные
значения
В стиле Python:
B = [x for x in A
if x % 2 == 0]
print ( sum(B) )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

78. Сумма не всех элементов массива

Программирование (Python), 8 класс
79
Задачи
«A»: Напишите программу, которая заполняет массив из
10 элементов случайными числами на отрезке [–5; 5]
и находит сумму положительных элементов.
«B»: Напишите программу, которая заполняет массив из
10 элементов случайными числами на отрезке [–2; 2]
и находит произведение ненулевых элементов.
«C»: Напишите программу, которая заполняет массив из
20 элементов случайными числами на отрезке
[100; 1000] и находит отдельно сумму элементов в
первой и во второй половинах массива.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

79. Задачи

Программирование (Python), 8 класс
80
Подсчёт элементов по условию
Задача. Найти количество чётных элементов массива.
? Какие переменные нужны?
count = 0
for i in range(N):
if A[i] % 2 == 0:
count += 1
print( count )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
переменнаясчётчик
? Что тут делаем?
http://kpolyakov.spb.ru

80. Подсчёт элементов по условию

Программирование (Python), 8 класс
81
Подсчёт элементов по условию (Python)
Задача. Найти количество чётных элементов массива.
count = 0
for x in A:
if x % 2 == 0:
count += 1
print( count )
В стиле Python:
B = [x for x in A
if x % 2 == 0]
print ( len(B) )
размер массива
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

81. Подсчёт элементов по условию (Python)

Программирование (Python), 8 класс
82
Среднее арифметическое
Задача. Найти среднее арифметическое элементов
массива, которые больше 180 (рост в см).
s = 0
for x in A:
if x > 180:
s += x
print( s/N )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Что плохо?
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
83
Среднее арифметическое
Задача. Найти среднее арифметическое элементов
массива, которые больше 180 (рост в см).
? Какие переменные нужны?
s = 0
count = 0
for x in A:
if x > 180:
count += 1
s += x
print( s/count )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Что тут делаем?
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
84
Среднее арифметическое (Python)
Задача. Найти среднее арифметическое элементов
массива, которые больше 180 (рост в см).
B = [ x for x in A
if x > 180]
print ( sum(B)/len(B) )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
отбираем нужные
http://kpolyakov.spb.ru

84. Среднее арифметическое (Python)

Программирование (Python), 8 класс
85
Задачи
«A»: Напишите программу, которая заполняет массив из
20 элементов случайными числами на отрезке [0;
200] и считает количество элементов, которые
делятся на 10.
«B»: Напишите программу, которая заполняет массив из
20 элементов случайными числами на отрезке [0; 200]
и считает среднее арифметическое двузначных чисел
в массиве.
«C»: Напишите программу, которая заполняет массив из
20 элементов случайными числами на отрезке [10;
100] и считает число пар соседних элементов, сумма
которых делится на 3.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

85. Задачи

Программирование (Python), 8 класс
86
Перестановка элементов массива
? Как поменять местами значения двух
переменных a и b?
вспомогательная
переменная
элементы массива:
с = a
a = b
b = c
с = A[i]
A[i] = A[k]
A[k] = c
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

86. Перестановка элементов массива

Программирование (Python), 8 класс
87
Перестановка пар соседних элементов
Задача. Массив A содержит чётное количество
элементов N. Нужно поменять местами пары соседних
элементов: 0-й с 1-м, 2-й — с 3-м и т. д.
0
1
2
3
7
12
38
5
0
1
2
3
12
7
5
38
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024


N-2
N-1
40
23
N-2
N-1
23
40
http://kpolyakov.spb.ru

87. Перестановка пар соседних элементов

Программирование (Python), 8 класс
88
Перестановка пар соседних элементов
for i in range(N):
поменять местами A[i] и A[i+1]
0
1
2
3
Что плохо?
?
4
5
7
12
38
5
40
23
12
7
38
5
40
23
12
38
7
5
40
выход
23 за границы
массива
12
38
5
7
40
23
12
38
5
40
7
23
12
38
5
40
23
7
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
?
http://kpolyakov.spb.ru

88. Перестановка пар соседних элементов

Программирование (Python), 8 класс
89
Перестановка пар соседних элементов
for i in range(0,N-1,2):
# переставляем A[i] и A[i+1]
c = A[i]
A[i] = A[i+1]
A[i+1] = c
A[0] A[1]
A[2] A[3]
...
A[N-2] A[N-1]
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

89. Перестановка пар соседних элементов

Программирование (Python), 8 класс
90
Реверс массива
Задача. Переставить элементы массива в обратном
порядке (выполнить реверс).
0
1
2
7
12
5
0
1
2
23
40
38
A[0] A[N-1]
A[1] A[N-2]
A[i] A[N-1-i]
A[N-1] A[0]
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024


N-3
N-2
N-1
38
40
23
N-3
N-2
N-1
5
12
7
0+N-1 = N-1
1+N-2 = N-1
i+??? = N-1
N-1+0 = N-1
http://kpolyakov.spb.ru

90. Реверс массива

Программирование (Python), 8 класс
91
Реверс массива
(N // 2):
for i in range(N):
поменять местами A[i] и A[N-1-i]
? Что плохо?
0
1
2
3
7
12
40
23
i=0
23
12
40
7
i=1
23
40
12
7
i=2
23
12
40
7
i=3
7
12
40
23
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Как исправить?
http://kpolyakov.spb.ru

91. Реверс массива

Программирование (Python), 8 класс
92
Задачи
«A»: Заполнить массив из 10 элементов случайными
числами в диапазоне [0; 100], поменять местами
пары соседних элементов, не трогая первый и
последний элементы.
Массив:
53 66 88 39 26 88 35 24 38 50
Результат: 53 88 66 26 39 35 88 38 24 50
«B»: Заполнить массив из 10 элементов случайными
числами в диапазоне [0; 100] и выполнить
циклический сдвиг влево: каждый элемент
перемещается на место предыдущего, а первый – на
место последнего.
Массив:
53 66 88 39 26 88 35 24 38 50
Результат: 66 88 39 26 88 35 24 38 50 53
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

92. Задачи

Программирование (Python), 8 класс
93
Задачи
«C»: Заполнить массив из 10 элементов случайными
числами в диапазоне [0; 100], сделать реверс
отдельно в первой и во второй половине массива.
Массив:
53 66 88 39 26 88 35 24 38 50
Результат: 26 39 88 66 53 50 38 24 35 88
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

93. Задачи

Программирование (Python), 8 класс
94
Поиск максимального элемента
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

94. Поиск максимального элемента

Программирование (Python), 8 класс
95
Поиск максимального элемента
? Какие переменные нужны?
for i in range(N):
if A[i] > M:
M = A[i]
print( M )
? Чего не хватает?
начальное
? Какое
значение взять для M?
1) M – значение, которое заведомо меньше всех
элементов массива
или
2) M = A[0] (или любой другой элемент)
максимальный не меньше, чем A[0]
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

95. Поиск максимального элемента

Программирование (Python), 8 класс
96
Поиск максимального элемента
начинаем с A[1], так как
A[0] мы уже посмотрели
M = A[0]
for i in range(1,N):
if A[i] > M:
M = A[i]
print( M )
? Как найти минимальный?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

96. Поиск максимального элемента

Программирование (Python), 8 класс
97
Поиск максимального элемента (Python)
M = A[0]
for x in A:
if x > M:
M = x
print( M )
перебрать все элементы
в массиве A
! Не нужно знать размер!
print( max(A) )
print( min(A) )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

97. Поиск максимального элемента (Python)

Программирование (Python), 8 класс
98
Номер максимального элемента
Задача. Найти в массиве максимальный элемент и его
номер.
? Какие переменные нужны?
M = A[0]; nMax = 0
for i in range(1,N):
if A[i] > M:
ли убрать одну
? Можно
M = A[i]
переменную?
nMax = i
print( f"A[{nMax}]={M}" )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

98. Номер максимального элемента

Программирование (Python), 8 класс
99
Номер максимального элемента
! Если знаем nMax, то M=A[nMax]!
M = A[0]; nMax = 0
for i in range(1,N):
:
if A[i]> A[nMax]
M :
M = A[i]
nMax = i
print( f"A[{nMax}]={M}"
)
{A[nMax]}"
)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

99. Номер максимального элемента

Программирование (Python), 8 класс
100
Задачи (без min и max)
«A»: Напишите программу, которая заполняет массив из
20 элементов случайными числами на отрезке [50;
150] и находит в нём минимальный и максимальный
элементы и их номера.
«B»: Напишите программу, которая заполняет массив из
10 элементов в виде
A = [ 10, 2, 3, 4, 10, 6, 7, 8, 9, 10]
и выводит количество элементов, имеющих
максимальное значение.
«C»: Напишите программу, которая заполняет массив из
20 элементов случайными числами на отрезке [100;
200] и находит в нём пару соседних элементов,
сумма которых минимальна.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

100. Задачи (без min и max)

Программирование (Python), 8 класс
101
Задачи
«D»: Напишите программу, которая заполняет массив из
20 элементов случайными числами на отрезке [–100;
100] и находит в каждой половине массива пару
соседних элементов, сумма которых максимальна.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

101. Задачи

Программирование (Python), 8 класс
102
Обработка потока данных: максимум
Задача. С клавиатуры вводятся числа, ввод
завершается числом 0. Найти максимальное
из введённых чисел.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

102. Обработка потока данных: максимум

Программирование (Python), 8 класс
103
Поиск максимума (минимума) в потоке
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

103. Поиск максимума (минимума) в потоке

Программирование (Python), 8 класс
104
Поиск максимума (минимума)
1) нужна переменная для хранения максимума
2) как только прочитали первое число,
сохранили максимум («из одного»):
x = int(input())
M = x
3) читаем следующее значение:
x = int(input())
4) цикл: если новое число больше максимума,
заменяем M:
while x != 0:
if x > M: M = x
5) выводим результат M
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

104. Поиск максимума (минимума)

Программирование (Python), 8 класс
105
Поиск максимума (минимума)
x = int(input())
M = x
while x != 0:
if x > M: M = x
print(M)
x = int(input())
print(M)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Что плохо?
http://kpolyakov.spb.ru

105. Поиск максимума (минимума)

Программирование (Python), 8 класс
106
Поиск максимума (минимума) – II
x = int(input())
M = x
while True:
x = int(input())
if x == 0: break
if x > M: M = x
print(M)
print(M)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Что плохо?
http://kpolyakov.spb.ru

106. Поиск максимума (минимума) – II

Программирование (Python), 8 класс
107
Максимум не из всех
Задача: с клавиатуры вводятся числа в
диапазоне [-100;100], ввод завершается
числом 0. Найти наибольшее среди чётных
чисел. Вывести "нет", если таких чисел нет.
x = int(input())
Может быть, что
M = x
x нечётное!
while x != 0:
if x % 2 == ???
0 and x > M:
M = x
x = int(input())
Что плохо?
?
print(M)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

107. Максимум не из всех

Программирование (Python), 8 класс
108
Минимум не из всех
По условию: x [-100;100]
x = int(input())
Любое x больше
M = -1000
этого числа!
while x != 0:
if x % 2 == 0 and x > M:
M = x
Как определить, что
?
x = int(input())
ни одного числа не
if M == -1000:
нашли?
print("Нет таких чисел")
else:
print(M)
? Как искать минимум?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

108. Минимум не из всех

Программирование (Python), 8 класс
109
Если диапазон неизвестен…
x = int(input())
M = 1 # любое нечётное
while x != 0:
if x % 2 == 0:
if M % 2 == 1 or x > M:
M = x
новый
x = int(input()) максимум
if M == 1 :
print("Нет таких чисел")
else:
print(M)
? Когда не нашли?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

109. Если диапазон неизвестен…

Программирование (Python), 8 класс
110
Задачи
«A»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить минимальное и
максимальное из введённых чисел.
Пример:
5
13
34
15
0
Минимум: 5
Максимум: 34
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

110. Задачи

Программирование (Python), 8 класс
111
Задачи
«B»: с клавиатуры вводятся числа из отрезка [1;1000],
ввод завершается числом 0. Определить
минимальное и максимальное из тех введённых
чисел, которые делятся на 3. Вывести "нет", если
таких чисел нет.
Пример:
Пример:
5
5
31
34
18
17
21
41
15
11
0
0
Минимум: 15
Ответ: нет
Максимум: 21
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

111. Задачи

Программирование (Python), 8 класс
112
Задачи
«C»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить минимальное и
максимальное из тех введённых двузначных
натуральных чисел, в записи которых есть цифра 6.
Вывести "нет", если таких чисел нет.
Пример:
6
36
18
26
15
0
Минимум: 26
Максимум: 36
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
Пример:
6
32
176
41
11
0
Ответ: нет
http://kpolyakov.spb.ru

112. Задачи

113
Программирование
(Python)
§ 23. Символьные строки
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

113. Программирование (Python)

Программирование (Python), 8 класс
114
Что такое символьная строка?
Символьная строка – это последовательность
символов.
• строка – единый объект
• длина строки может меняться во время работы
программы
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

114. Что такое символьная строка?

Программирование (Python), 8 класс
115
Символьные строки
Присваивание:
s = "Вася пошёл гулять"
Ввод с клавиатуры:
s = input()
Вывод на экран:
print(s)
Длина строки:
n = len(s)
length – длина
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
116
Сравнение строк
?
print("Введите пароль: ")
Какой правильный
s = input()
пароль?
if s == "sEzAm":
print("Слушаюсь и повинуюсь!")
else:
print("Пароль неправильный")
? Как одна строка может быть меньше другой?
стоит раньше в отсортированном списке
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

116. Сравнение строк

Программирование (Python), 8 класс
117
Сравнение строк
s1 = "паровоз"
s2 = "пароход"
if s1 < s2:
print(s1, "<", s2)
elif s1 == s2:
print(s1, "=", s2)
else:
print(s1, ">", s2)
? Что выведет?
паровоз < пароход
первые отличающиеся
буквы
Сравниваем с начала: паровоз
пароход
! в < х!
«в»: код 1074
«х»: код 1093
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

117. Сравнение строк

Программирование (Python), 8 класс
118
Обращение к символу по номеру
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]
! Символы нумеруются с нуля!
составить «кот»
s = "информатика"
kot = s[-2]+s[3]+s[-4]
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

118. Обращение к символу по номеру

Программирование (Python), 8 класс
119
Посимвольная обработка строк
! Строка неизменна!
s[4] = "a"
Задача. Ввести строку и заменить в ней все буквы «э» на
буквы «е».
строим новую
строку!
sNew = ""
for i in range(len(s)
) :
range(len(s))
if s[i] == "э":
sNew += "е"
для каждого
символа строки
else:
sNew += s[i]
0
1
2
3
4
5
6
П
р
и
в
э
т
!
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
len(s)-1
http://kpolyakov.spb.ru

119. Посимвольная обработка строк

Программирование (Python), 8 класс
120
Цикл перебора символов
sNew = ""
for c in s:
if c == "э":
sNew += "е"
else:
sNew += c
перебрать
все символы
строки
c
П
р
и
в
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
э
т
!
http://kpolyakov.spb.ru

120. Цикл перебора символов

Программирование (Python), 8 класс
121
Задачи
«A»: Напишите программу, которая вводит строку,
состоящую только из точек и букв Х, и заменяет в
ней все точки на нули и все буквы X на единицы.
Пример:
Введите строку: ..X.XX.
Двоичный код: 0010110
«B»: Напишите программу, которая в символьной строке
заменяет все нули на единицы и наоборот.
Остальные символы не должны измениться.
Пример:
Введите строку: 10а01Bx1010c
Инверсия: 01a10Bx0101c
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

121. Задачи

Программирование (Python), 8 класс
122
Задачи
«С»: Введите битовую строку и дополните её последним
битом, который должен быть равен 0, если в
исходной строке чётное число единиц, и равен 1,
если нечётное (в получившейся строке должно
всегда быть чётное число единиц).
Пример:
Введите битовую строку: 01101010110
Результат: 011010101100
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

122. Задачи

Программирование (Python), 8 класс
123
Операции со строками
Объединение (конкатенация) :
s1 = "Привет"
"Привет, Вася!"
s2 = "Вася"
s = s1 + ", " + s2 + "!"
Умножение:
s = "АУ"
s5 = s*5
s5 = s + s + s + s + s
АУАУАУАУАУ
? Что получим?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
124
Срезы строк (выделение части строки)
s = "0123456789"
s1 = s[3:8]
# "34567"
с какого
символа
до какого
(не включая 8)
s = "0123456789"
s1 = s[:8]
# "01234567"
от начала строки
s = "0123456789"
s1 = s[3:]
# "3456789"
до конца строки
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

124. Срезы строк (выделение части строки)

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

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

Программирование (Python), 8 класс
126
Операции со строками
Удаление:
s = "0123456789"
s1 = s[:3] + s[9:]
"012"
"9"
"0129"
Вставка:
s = "0123456789"
s1 = s[:3] + "ABC" + s[3:]
"012"
"3456789"
"012ABC3456789"
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
127
Поиск в строках
s = "Здесь был Вася."
n = s.find ( "с" )
# n = 3
if n >= 0:
print ( "Номер символа", n )
else:
print ( "Символ не найден." )
! Находит первое слева вхождение
подстроки!
Поиск с конца строки:
s = "Здесь был Вася."
n = s.rfind ( "с" )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
# n = 12
http://kpolyakov.spb.ru

127. Поиск в строках

Программирование (Python), 8 класс
128
Задачи
«A»: Ввести с клавиатуры в одну строку фамилию и имя,
разделив их пробелом. Вывести первую букву имени с
точкой и потом фамилию.
Пример:
Введите фамилию и имя:
Иванов Петр
П. Иванов
«B»: Ввести с клавиатуры в одну строку фамилию, имя и
отчество, разделив их пробелом. Вывести фамилию и
инициалы.
Пример:
Введите фамилию, имя и отчество:
Иванов Петр Семёнович
П.С. Иванов
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

128. Задачи

Программирование (Python), 8 класс
129
Задачи
«C»: Ввести адрес файла и «разобрать» его на части,
разделенные знаком "/". Каждую часть вывести в
отдельной строке.
Пример:
Введите адрес файла:
C:/Фото/2015/Байкал/shaman.jpg
C:
Фото
2015
Байкал
shaman.jpg
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

129. Задачи

Программирование (Python), 8 класс
130
Преобразования «строка» «число»
Из строки в число:
s = "123"
N = int ( s )
s = "123.456"
X = float ( s )
# N = 123
# X = 123.456
Из числа в строку:
N = 123
s = str ( N ) # s = "123"
s = f"{N:5}" # s = " 123"
X = 123.456
s = str (X )
# s = "123.456"
s = f"{X:7.2f}" # s = " 123.46"
s = f"{X:10.2e}" # s = " 1.23e+02"
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

130. Преобразования «строка»  «число»

Программирование (Python), 8 класс
131
Задачи
«A»: Напишите программу, которая вычисляет сумму двух
чисел, введенную в форме символьной строки. Все числа
целые.
Пример:
Введите выражение:
12+3
Ответ: 15
«B»: Напишите программу, которая вычисляет сумму трёх
чисел, введенную в форме символьной строки. Все числа
целые.
Пример:
Введите выражение:
12+3+45
Ответ: 60
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

131. Задачи

Программирование (Python), 8 класс
132
Задачи
«C»: Напишите программу, которая вычисляет сумму
произвольного количества чисел, введенную в форме
символьной строки. Все числа целые.
Пример:
Введите выражение:
12+3+45+10
Ответ: 70
«D»: Напишите программу, которая вычисляет выражение,
содержащее целые числа и знаки сложения и вычитания.
Пример:
Введите выражение:
12+134–45–17
Ответ: 84
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

132. Задачи

Программирование (Python), 8 класс
133
Подсчёт количества символов
Задача. Определить, сколько букв A в строке s.
count
0
1
2
3
4
5
6
s
B
A
D
C
E
A
A
0
0
1
1
1
1
2
3
s = input()
count = 0
for c in s:
if c == 'A':
count += 1
print( count )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

133. Подсчёт количества символов

Программирование (Python), 8 класс
134
Другое решение
Задача. Определить, сколько букв A в строке s.
count
0
1
2
3
4
5
6
s
B
A
D
C
E
A
A
0
0
1
1
1
1
2
3
! Знаем индекс символа!
s = input()
N = len(s)
count = 0
for i in range(N):
s[i] == 'A':
if s[i]
count += 1
print( count )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Как обратиться
к следующему
символу?
s[i+1]
http://kpolyakov.spb.ru

134. Другое решение

Программирование (Python), 8 класс
135
Задачи
«A»: Напишите программу, которая вводит символьную строку
и выводит 0, если в этой строке буква A встречается
чаще чем буква B, а в противном случае выводит 1.
Пример 1:
Введите строку: ABCABCA
Ответ: 0
Пример 2:
Введите строку: ABCABC
Ответ: 1
Пример 3:
Введите строку: ABCABCB
Ответ: 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

135. Задачи

Программирование (Python), 8 класс
136
Задачи
«B»: Напишите программу, которая вводит символьную строку
и определяет количество пар одинаковых символов,
стоящих рядом.
Пример 1:
Введите строку: ABCABCA
Ответ: 0
Пример 2:
Введите строку: ABBCAABCC
Ответ: 3
Пример 3:
Введите строку: AAAAAA
Ответ: 5
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

136. Задачи

Программирование (Python), 8 класс
137
Задачи
«C»: Напишите программу, которая вводит символьную строку
и определяет, какая буква встречается в ней чаще всего.
Если таких букв несколько, можно вывести любую из них.
Пример 1:
Введите строку: ABCABC
Ответ: A
Пример 2:
Введите строку: CBBACAABC
Ответ: C
Пример 3:
Введите строку: BBBBBB
Ответ: B
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

137. Задачи

Программирование (Python), 8 класс
138
Самая длинная цепочка
Задача. Определить наибольшую длину цепочки из
букв A в строке s.
0
1
2
3
4
5
6
s
B
A
D
A
A
C
A
L 0
maxL 0
0
0
1
1
0
1
1
1
2
2
0
2
1
2
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

138. Самая длинная цепочка

Программирование (Python), 8 класс
139
Самая длинная цепочка
Задача. Определить наибольшую длину цепочки из
букв A в строке s.
0
1
2
s
цепочка
A продолжается
L += 1
if L > maxL:
maxL = L
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
3
4
5
6
?
цепочка
прервалась
не A
L = 0
новая не
началась!
http://kpolyakov.spb.ru

139. Самая длинная цепочка

Программирование (Python), 8 класс
140
Самая длинная цепочка
Задача. Определить наибольшую длину цепочки из
букв A в строке s.
s = input()
L = maxL = 0
цепочка
продолжается
for c in s:
if c == 'A':
L += 1
if L > maxL:
maxL = L
else:
цепочка
L = 0
прервалась
print( maxL )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

140. Самая длинная цепочка

Программирование (Python), 8 класс
141
Задачи
«A»: Напишите программу, которая вводит символьную строку
и определяет наибольшую длину цепочки, которая
состоит только из букв X и Y.
Пример 1:
Введите строку: YXXYBCXYY
Ответ: 4
Пример 2:
Введите строку: ABCABC
Ответ: 0
Пример 3:
Введите строку: XXXXXX
Ответ: 6
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

141. Задачи

Программирование (Python), 8 класс
142
Задачи
«B»: Напишите программу, которая вводит символьную строку
и определяет наибольшую длину цепочки, которая
состоит только из цифр (от 0 до 9).
Пример 1:
Введите строку: A01B1234C5
Ответ: 4
Пример 2:
Введите строку: ABCABC
Ответ: 0
Пример 3:
Введите строку: 980123
Ответ: 6
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

142. Задачи

Программирование (Python), 8 класс
143
Задачи
«C»: Напишите программу, которая вводит символьную строку
и определяет наибольшую длину цепочки, которая
состоит только из цифр (от 0 до 9), которые стоят в
порядке возрастания.
Пример 1:
Введите строку: A7654321B4230C5
Ответ: 2
Пример 2:
Введите строку: ABCABC
Ответ: 0
Пример 3:
Введите строку: A12389B
Ответ: 5
Пример 4:
Введите строку: 123489
Ответ: 6
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

143. Задачи

Программирование (Python), 8 класс
144
Метод замены символов
Задача. Определить наибольшую длину цепочки из
букв A в строке s.
s
0
1
2
3
4
5
6
B
A
D
A
A
C
A
Алгоритм
1) заменить все буквы, кроме A, на пробелы
s
A
A
A
A
2) разбить строку на части по пробелам
['A', 'AA', 'A']
3) определить максимальную из длин полученных
строк
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

144. Метод замены символов

Программирование (Python), 8 класс
145
Метод замены символов
Задача. Определить наибольшую длину цепочки из
букв A в строке s.
s
s
B
A
A
D
A
A
A
A
C
A
A
s = s.replace('B', ' ')
s = s.replace('C', ' ')
s = s.replace('D', ' ')
for c in 'BCD':
s = s.replace( c, ' ' )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

145. Метод замены символов

Программирование (Python), 8 класс
146
Метод замены символов
Задача. Определить наибольшую длину цепочки из
букв A в строке s.
s
A
A
A
A
['A', 'AA', 'A']
parts = s.split()
maxL = 0
for p in parts:
if len(p) > maxL:
maxL = len(p)
print( maxL )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

146. Метод замены символов

Программирование (Python), 8 класс
147
Метод замены символов
Задача. Определить наибольшую длину цепочки из
букв A в строке s.
s
A
A
A
A
['A', 'AA', 'A']
parts = s.split()
print( max( len(p)
for p in parts ) )
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

147. Метод замены символов

Программирование (Python), 8 класс
148
Задачи
«A»: Напишите программу, которая вводит символьную
строку, состоящую только из букв P, Q и R, и определяет
наибольшую длину цепочки, которая состоит только из
букв Q.
Пример 1:
Введите строку: PQRPQQR
Ответ: 2
Пример 2:
Введите строку: QRQPQRQP
Ответ: 1
Пример 3:
Введите строку: RRPRPRP
Ответ: 0
Пример 4:
Введите строку: QQQQQQ
Ответ: 6
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

148. Задачи

Программирование (Python), 8 класс
149
Задачи
«B»: Напишите программу, которая вводит символьную
строку, состоящую только из цифр и букв A, B, C.
Программа должна определить количество цепочек
длиной больше 2, состоящих только из цифр (от 0 до 9).
Пример 1:
Введите строку: A01B1234C5
Ответ: 1
Пример 2:
Введите строку: 315C789A71829
Ответ: 3
Пример 3:
Введите строку: A1B21C32C43A54B61C
Ответ: 0
Пример 4:
Введите строку: 12345678
Ответ: 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

149. Задачи

Программирование (Python), 8 класс
150
Задачи
«С»: Напишите программу, которая вводит символьную
строку, состоящую только из цифр и заглавных латинских
букв (от A до Z). Программа должна определить
количество цепочек длиной больше 2, состоящих только
из цифр (от 0 до 9).
Пример 1:
Введите строку: E01W1234X5
Ответ: 1
Пример 2:
Введите строку: 315C789R71829
Ответ: 3
Пример 3:
Введите строку: A1R21T32N43Y54O61L
Ответ: 0
Пример 4:
Введите строку: 12345678
Ответ: 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

150. Задачи

Программирование (Python), 8 класс
151
Конец фильма
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной
дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

151. Конец фильма

Программирование (Python), 8 класс
152
Источники иллюстраций
1.
2.
иллюстрации художников издательства «Бином»
авторские материалы
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru
English     Русский Правила