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

Линейные программы. Программирование циклических алгоритмов. Алгоритмы обработки массивов. Символьные строки

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

1
Программирование
(Python)
§ 17. Введение
§ 18. Линейные программы
§ 19. Ветвления
§ 20. Программирование циклических
алгоритмов
§ 21. Массивы
§ 22. Алгоритмы обработки массивов
§ 23. Символьные строки
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

3. Что такое программирование?

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

4. Направления в программировании

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

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

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

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

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

7. Переход на новую строку

Программирование (Python), 8 класс
7
Переход на новую строку
print( "Привет, Вася!" )
print( "Привет, Петя!" )
Результат:
Привет, Вася!
Привет, Петя!
переход на новую
строку автоматически
Нужно в одной строке:
Привет, Вася!Привет, Петя!
Решение:
print( "Привет, Вася!", end="" )
print( "Привет, Петя!" )
после вывода данных
ничего не выводить
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

8. Системы программирования

Программирование (Python), 8 класс
8
Системы программирования
Системы программирования — это средства для
создания новых программ.
Транслятор — это программа, которая переводит
тексты программ, написанных программистом, в
машинные коды (команды процессора).
• компилятор — переводит всю программу в
машинные коды, строит исполняемый файл (.exe)
program Hello;
begin
write('Привет!')
end.
1010010100
privet.exe
• интерпретатор — сам выполняет программу по
частям (по одному оператору).
! Python – интерпретатор!
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

9. Системы программирования

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

10. Задачи

Программирование (Python), 8 класс
10
Задачи
«B»: Вывести на экран текст «лесенкой»
Вася
пошел
гулять
«C»: Вывести на экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

11
Программирование
(Python)
§ 18. Линейные программы
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

12. Пример задачи

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

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

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

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

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

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

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

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

Программирование (Python), 8 класс
16
Работа с переменными
Изменение значения
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

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

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

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

Программирование (Python), 8 класс
18
Ввод с клавиатуры
ввести строку с клавиатуры
и связать с переменной 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

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

Программирование (Python), 8 класс
19
Ввод с подсказкой
Введите число: 26
a = input( "Введите число: " )
?
подсказка
Что не так?
a = int( input("Введите число: ") )
? Что будет?
преобразовать
в целое число
Введите число: Qu-Qu
ValueError: invalid literal for int() with base 10: 'Qu-Qu'
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

21. Программа сложения чисел

Программирование (Python), 8 класс
21
Программа сложения чисел
? Что плохо?
a = int ( input() )
b = int ( input() )
c=a+b
print ( c )
ожидание:
реальность:
Введите два числа:
5
7
5+7=12
5
7
12
? Как улучшить диалог?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

22. Вывод данных с текстом

Программирование (Python), 8 класс
22
Вывод данных с текстом
значение b
значение a
значение с
5+7=12
текст
print(a, "+", b, "=", c)
ожидание:
реальность:
5+7=12
5 + 7 = 12
это пробелы не заказывали!
print(a, "+", b, "=", c, sep="" )
separator
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
пустой
http://kpolyakov.spb.ru

23. Вывод данных с текстом (f-строки)

Программирование (Python), 8 класс
23
Вывод данных с текстом (f-строки)
значение b
значение a
значение с
5+7=12
текст
имена переменных в
фигурных скобках
print( f "{a}+{b}={c}" )
форматная
строка
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

24. Программа сложения чисел

Программирование (Python), 8 класс
24
Программа сложения чисел
print ( "Введите два числа: " )
a = int ( input() )
b = int ( input() )
c=a+b
print ( f"{a}+{b}={c}" )
? Как переделать для 3-х чисел?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
25
Ввод двух чисел в одной строке
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

26. Задачи

Программирование (Python), 8 класс
26
Задачи
«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

27. Задачи

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

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

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

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

Программирование (Python), 8 класс
29
Порядок выполнения операций
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

30. Деление

Программирование (Python), 8 класс
30
Деление
Классическое деление:
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

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

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

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

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

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

Программирование (Python), 8 класс
33
Операторы // и %
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
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
4
3
2
1
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
34
Сокращенная запись операций
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

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

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

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

Программирование (Python), 8 класс
36
Форматный вывод
a = 1; b = 2; c = 3
print( a, b, c )
1 2 3
форматная строка
123
print( f"{a}{b}{c}" )
print( f"{a}{b:3}{c:5}" )
количество знаков
на вывод числа
? Сколько знаков для вывода a?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
1
2
3
3
5
http://kpolyakov.spb.ru

37. Задачи

Программирование (Python), 8 класс
37
Задачи
«A»: Ввести число, обозначающее количество секунд.
Вывести то же самое время в минутах и секундах.
Пример:
Введите число секунд: 175
2 мин. 55 с.
«B»: Ввести число, обозначающее количество секунд.
Вывести то же самое время в часах, минутах и
секундах.
Пример:
Введите число секунд: 8325
2 ч. 18 мин. 45 с
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

38. Задачи

Программирование (Python), 8 класс
38
Задачи
«С»: Занятия в школе начинаются в 8-30. Урок длится 45
минут, перерывы между уроками – 10 минут. Ввести
номер урока и вывести время его окончания.
Пример:
Введите номер урока: 6
13-50
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

39. Задачи (Повторение)

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

40. Задачи

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

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

Программирование (Python), 8 класс
41
Вещественные числа (сложение)
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

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

Программирование (Python), 8 класс
42
Форматный вывод
x=12.345678
print( f"x={x}" )
всего на
число
x=12.345678
в дробной
части
print( f"x={x:10.3f}" )
x=
12.346
3
10
print( f"x={x:8.2f}" )
x=
12.34
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
43
Форматный вывод
print( f"x={x:2.2f}" )
x=12.34
print( f"x={x:.2f}" )
x=12.34
минимально
возможное
print( f"x={x:0.1f}" )
x=12.3
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

44. Научный формат чисел

Программирование (Python), 8 класс
44
Научный формат чисел
x=123456789
print( f"x={x:e}" )
x=1.234568e+008
1,234568 108
x=0.0000123456789
print( f"x={x:e}" )
x=1.234568e-005
1,234568 10–5
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

Программирование (Python), 8 класс
46
Математические функции
загрузить
модуль 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

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

Программирование (Python), 8 класс
47
Операции с вещественными числами
1/3 = 0,33333…
бесконечно много знаков
! Большинство вещественных чисел хранятся в
памяти компьютера с ошибкой!
x = 1/2
y = 1/3
z = 5/6 # 5/6=1/2+1/3
print(x+y-z)
-1.110223e-016
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

48. Задачи

Программирование (Python), 8 класс
48
Задачи
«A»: Ввести число, обозначающее размер одной
фотографии в Мбайтах. Определить, сколько
фотографий поместится на флэш-карту объёмом
2 Гбайта.
Пример:
Размер фотографии в Мбайтах: 6.3
Поместится фотографий: 325.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

49. Задачи

Программирование (Python), 8 класс
49
Задачи
«B»: Оцифровка звука выполняется в режиме стерео с
частотой дискретизации 44,1 кГц и глубиной
кодирования 24 бита. Ввести время записи в
минутах и определить, сколько Мбайт нужно
выделить для хранения полученного файла
(округлить результат в большую сторону).
Пример:
Введите время записи в минутах: 10
Размер файла 152 Мбайт
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

50. Задачи

Программирование (Python), 8 класс
50
Задачи
«С»: Разведчики-математики для того, чтобы опознать
своих, используют числовые пароли. Услышав
число-пароль, разведчик должен возвести его в
квадрат и сказать в ответ первую цифры дробной
части полученного числа. Напишите программу,
которая по полученному паролю (вещественному
числу) вычисляет число-ответ.
Пример:
Введите пароль: 1.92
Ответ: 6
потому что 1,922 = 3,6864…, первая цифра
дробной части – 6
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

Программирование (Python), 8 класс
52
Случайные и псевдослучайные числа
! Компьютер неслучаен!
Псевдослучайные числа — похожи на случайные, но
строятся по формуле.
следующее
предыдущее
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

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

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

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

Программирование (Python), 8 класс
54
Датчик случайных чисел
Вещественные числа:
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

55. Задачи

Программирование (Python), 8 класс
55
Задачи
«A»: В игре «Русское лото» из мешка случайным
образом выбираются бочонки, на каждом из которых
написано число от 1 до 90. Напишите программу,
которая выводит наугад первые 5 выигрышных
номеров.
«B»: + Доработайте программу «Русское лото» так,
чтобы все 5 значений гарантированно были бы
разными (используйте разные диапазоны).
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

56. Задачи

Программирование (Python), 8 класс
56
Задачи
«С»: + Игральный кубик бросается три раза (выпадает
три случайных значения). Из этих чисел
составляется целое число, программа должна найти
его квадрат.
Пример:
Выпало очков:
1 2 3
Число 123
Его квадрат 15129
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

57. Задачи

Программирование (Python), 8 класс
57
Задачи
«D»: + Получить случайное трёхзначное число и вывести
в столбик его отдельные цифры.
Пример:
Получено число 123
сотни: 1
десятки: 2
единицы: 3
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

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

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

Программирование (Python), 8 класс
60
Вариант 1. Программа
print("Введите два целых числа")
a = int(input())
b = int(input())
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

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

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

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

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

63. Примеры

Программирование (Python), 8 класс
63
Примеры
Поиск минимального:
if a < b:
M = a
if b < a:
M = b
? Что плохо?
? Когда работает неверно?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

64. Примеры

Программирование (Python), 8 класс
64
Примеры
? Что делает эта программа?
? В чём отличие?
if a < b:
c = a
a = b
b = c
b
a
4
6
2
6
4
?
4
c
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
if a < b:
c = a
a = b
b = c
Решение в стиле Python:
a, b = b, a
http://kpolyakov.spb.ru

65. В других языках программирования

Программирование (Python), 8 класс
65
В других языках программирования
Паскаль:
С:
if a < b then begin
c:= a;
a:= b;
b:= c;
end;
if (a < b) {
c = a;
a = b;
b = c;
}
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

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

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

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

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

Программирование (Python), 8 класс
69
Каскадное ветвление
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

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

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

71. Задачи

Программирование (Python), 8 класс
71
Задачи
«C»: Ввести последовательно возраст Антона, Бориса и
Виктора. Определить, кто из них старше.
Пример:
Возраст Антона: 15
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Борис старше всех.
Пример:
Возраст Антона: 17
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Антон и Борис старше Виктора.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

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

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

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

75. Примеры

Программирование (Python), 8 класс
75
Примеры
Задача. Вывести "Да", если число в переменной a –
двузначное.
if 10 <= a and a <= 99:
print("Да")
Задача. Вывести "Да", если число в переменной a –
двузначное и делится на 7.
if 10 <= a and a <= 99 and (a % 7)==0:
print("Да")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

77. Ещё пример

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

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

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

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

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

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

Программирование (Python), 8 класс
80
Порядок выполнения операций
• выражения в скобках
• <, <=, >, >=, =, !=
• 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

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

Программирование (Python), 8 класс
81
Сложные условия
Истинно или ложно
not (a > b)
Да
a < b and b < c
Да
2
b
3
c
4
Нет
a > c or b > c
a < b and b > c
Нет
a > c and b > d
Нет
Да
not (a >= b) or c == d
a >= b or not (c < b)
a > c or b > c or b > a
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
a
Да
Да
http://kpolyakov.spb.ru

82. Задачи

Программирование (Python), 8 класс
82
Задачи
«A»: Напишите программу, которая получает три числа рост трёх спортсменов, и выводит сообщение «По
росту.», если они стоят по возрастанию роста, или
сообщение «Не по росту!», если они стоят не по
росту.
Пример:
Введите рост трёх спортсменов:
165 170 172
По росту.
Пример:
Введите рост трёх спортсменов:
175 170 172
Не по росту!
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

83. Задачи

Программирование (Python), 8 класс
83
Задачи
«B»: Напишите программу, которая получает номер
месяца и выводит соответствующее ему время года
или сообщение об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

84. Задачи

Программирование (Python), 8 класс
84
Задачи
«C»: Напишите программу, которая получает возраст
человека (целое число, не превышающее 120) и
выводит этот возраст со словом «год», «года» или
«лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
85
Логические переменные
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

86. Задачи

Программирование (Python), 8 класс
86
Задачи
«A»: Напишите программу, которая получает с
клавиатуры целое число и записывает в логическую
переменную значение «да» (True), если это число
трёхзначное. После этого на экран выводится ответ
на вопрос: «Верно ли, что было получено
трёхзначное число?».
Пример:
Введите число: 165
Ответ: да.
Пример:
Введите число: 1651
Ответ: нет.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

87. Задачи

Программирование (Python), 8 класс
87
Задачи
«B»: Напишите программу, которая получает с
клавиатуры трёхзначное число и записывает в
логическую переменную значение «да» (True), если
это число – палиндром, то есть читается одинаково
слева направо и справа налево. После этого на
экран выводится ответ на вопрос: «Верно ли, что
введённое число – палиндром?».
Пример:
Введите число: 165
Ответ: нет.
Пример:
Введите число: 656
Ответ: да.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

88. Задачи

Программирование (Python), 8 класс
88
Задачи
«С»: Напишите программу, которая получает с
клавиатуры трёхзначное число и записывает в
логическую переменную значение «да» (True), если
это все его цифры одинаковы. После этого на экран
выводится ответ на вопрос: «Верно ли, что все
цифры введённого числа одинаковы?»
Пример:
Введите число: 161
Ответ: нет.
Пример:
Введите число: 555
Ответ: да.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

89. Экспертная система

Программирование (Python), 8 класс
89
Экспертная система
Экспертная система — это компьютерная программа,
задача которой — заменить человека-эксперта при
принятии решений в сложной ситуации.
База знаний = факты + правила вывода:
• если у животного есть перья, то это птица;
• если животное кормит детенышей молоком, то это —
млекопитающее;
• если животное — млекопитающее и ест мясо, то
это — хищник.
Диалог:
Это животное кормит детей молоком? Нет
Это животное имеет перья? Да
Это птица.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

90. Дерево решений

Программирование (Python), 8 класс
90
Дерево решений
Кормит детей молоком?
да
нет
Имеет перья?
млекопитающее
Ест мясо?
нет
да
нет
да
?
птица
?
хищник
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

91. Программирование экспертной системы

Программирование (Python), 8 класс
91
Программирование экспертной системы
Ответы пользователя: да и нет – символьные строки.
ans = input("Кормит детей молоком? ")
if ans == "да":
... # вариант 1
else:
# вариант
... # вариант
2 1
print("Млекопитающее.")
ans = input("Ест мясо? ")
if ans == "да":
print("Хищник.")
else:
print("Не знаю.")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

92. Заглавные и строчные буквы

Программирование (Python), 8 класс
92
Заглавные и строчные буквы
if ans == "да":
...
не сработает
на "Да"
? Как исправить?
if ans == "да" or ans == "Да":
...
Ещё лучше:
if ans.lower() == "да":
...
преобразовать все
заглавные в строчные
if ans.upper() == "ДА":
...
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

94. Виды ошибок

Программирование (Python), 8 класс
94
Виды ошибок
Синтаксические ошибки – нарушение правил записи
операторов языка программирования.
Обнаруживаются транслятором.
Логические ошибки – неверно составленный алгоритм.
Отказ (ошибка времени выполнения) – аварийная
ситуация во время выполнения программы.
Отладка – поиск и исправление ошибок в программе.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

95. Пример отладки программы

Программирование (Python), 8 класс
95
Пример отладки программы
Программа решения квадратного уравнения
ax 2 bx c 0
from math import sqrt
print("Введите a, b, c: ")
a = float(input())
float – преобразовать в
b = float(input())
вещественное число
c = float(input())
D = b*b - 4*a*a
x1 = (-b+sqrt(D))/2*a
x2 = (-b-sqrt(D))/2*a
print("x1=", x1, " x2=", x2, sep="")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

96. Тестирование

Программирование (Python), 8 класс
96
Тестирование
Тест 1. a = 1, b = 2, c = 1.
Ожидание:
x1=-1.0 x2=-1.0
Реальность:
x1=-1.0 x2=-1.0
Тест 2. a = 1, b = – 5, c = 6.
x1=3.0 x2=2.0
x1=4.791 x2=0.209
Найден вариант, когда программа работает неверно.
Ошибка воспроизводится!
Возможные причины:
• неверный ввод данных
• неверное вычисление дискриминанта
• неверное вычисление корней
• неверный вывод результатов
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
D b 2 4ac
b D
x1, 2
2a
http://kpolyakov.spb.ru

97. Отладочная печать

Программирование (Python), 8 класс
97
Отладочная печать
Идея: выводить все промежуточные результаты.
a = float(input())
b = float(input())
c = float(input())
print(a, b, c)
D = b*b - 4*a*a
print("D=", D)
...
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

98. Отладочная печать

Программирование (Python), 8 класс
98
Отладочная печать
Идея: выводить все промежуточные результаты.
Результат:
Введите a, b, c:
1
-5
6
1.0 -5.0 6.0
D= 21.0
D b 2 4ac 25 4 1 6 1
D = b*b - 4*a* с ;
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
! Одна ошибка найдена!
http://kpolyakov.spb.ru

99. Отладка программы

Программирование (Python), 8 класс
99
Отладка программы
Тест 1. a = 1, b = 2, c = 1.
Ожидание:
x1=-1.0 x2=-1.0
Реальность:
x1=-1.0 x2=-1.0
Тест 2. a = 1, b = – 5, c = 6.
x1=3.0 x2=2.0
x1=3.0 x2=2.0
? Программа работает верно?
Тест 3. a = 8, b = – 6, c = 1.
x1=0.5 x2=0.25
x1=32.0 x2=16.0
x1 = (-b+sqrt(D))/2*a
(2*a)
x2 = (-b-sqrt(D))/2*a
(2*a)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Что неверно?
http://kpolyakov.spb.ru

100. Задачи

Программирование (Python), 8 класс
100
Задачи
«A»: Загрузите программу, которая должна вычислять
сумму цифр трёхзначного числа:
N = input(int("N = "))
d0 = N % 10
d1 = N % 100
d2 = N // 100
d0 + d2 = s
print(s)
Выполните отладку программы:
• исправьте синтаксические ошибки
• определите ситуации, когда она работает неверно
• исправьте логические ошибки.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

101. Задачи

Программирование (Python), 8 класс
101
Задачи
«B»: Доработайте программу из п. А так, чтобы она
правильно работала с отрицательными
трёхзначными числами: при вводе числа «–123»
программа должна выдавать ответ 6.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

102. Задачи

Программирование (Python), 8 класс
102
Задачи
«С»: Загрузите программу, которая должна вычислять
наибольшее из трёх чисел:
a = input("a = ")
b = int("b = ")
c = input("c = ")
if a > b: M = a
else
M = b
if c > b
M = b
else:
M = c
input(M)
Выполните отладку программы:
• исправьте синтаксические ошибки
• определите ситуации, когда она работает неверно
• исправьте логические ошибки.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

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

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

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

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

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

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

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

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

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

109. Подбор числа битов

Программирование (Python), 8 класс
109
Подбор числа битов
Задача. Ввести целое число – мощность алфавита M.
Найти количество битов i, необходимое для
равномерного кодирования символов из этого
алфавита.
?
Как найти i?
2i ≥ M
Начинаем с i = 1, увеличиваем i, пока i < M.
M = int(input("Мощность алфавита:"))
i = 1
while 2**i > 0:
i += 1
print(f"i={i}")
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

110. Задачи

Программирование (Python), 8 класс
110
Задачи
«A»: Напишите программу, которая получает с
клавиатуры количество повторений и выводит
столько же раз какое-нибудь сообщение.
Пример:
Сколько раз повторить? 3
Привет!
Привет!
Привет!
«B»: Напишите программу, которая получает с
клавиатуры натуральное число N и подбирает
наибольшее натуральное число, квадрат которого
меньше, чем N.
Пример:
Введите число: 311
Ответ: 17
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

111. Задачи

Программирование (Python), 8 класс
111
Задачи
«С»: Напишите программу, которая получает с
клавиатуры натуральное число N и подбирает
наибольшее число Фибоначчи, которое не больше,
чем N. Числа Фибоначчи – это последовательность
чисел, в которой первые два числа равны 1, а
каждое следующее равно сумме двух предыдущих:
1, 1, 2, 3, 5, 8, 13, 21, …
Пример 1:
Введите число: 311
Ответ: 233
Пример 2:
Введите число: 377
Ответ: 377
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

112. Разбиение числа на отдельные цифры

Программирование (Python), 8 класс
112
Разбиение числа на отдельные цифры
Задача. Ввести натуральное число и вывести в столбик
все его цифры, начиная с последней.
123 3
2
1
Выделить последнюю цифру числа в переменной N:
d = N % 10
123 3
Отбросить последнюю цифру числа в переменной N:
N = N // 10
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
123 12
http://kpolyakov.spb.ru

113. Разбиение числа на отдельные цифры

Программирование (Python), 8 класс
113
Разбиение числа на отдельные цифры
• выделяем последнюю цифру числа (%)
• выводим эту цифру на экран
• отсекаем последнюю цифру числа (//)
N
d
начальное значение
123
12
3
1
2
0
1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
? Когда остановиться?
while N != 0:
...
http://kpolyakov.spb.ru

114. Разбиение числа на отдельные цифры

Программирование (Python), 8 класс
114
Разбиение числа на отдельные цифры
N = int(input("Введите число:"))
while N != 0:
d = N % 10
print( d )
N = N // 10
? Если вместо 10 написать 8 ?
? Если вместо 10 написать 2?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
12 4
1
12 0
0
1
1
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
115
Сумма цифр числа
Задача. Вычислить сумму цифр введённого числа.
123 1 + 2 + 3 = 6
Выделить последнюю цифру числа в переменной N:
d = N % 10
123 3
Отбросить последнюю цифру числа в переменной N:
N = N // 10
123 12
Добавить к переменной s значение переменной d:
s +=
= sd+ d
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
s = 6 6 + 4 = 10
d=4
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
116
Сумма цифр числа
• выделяем последнюю цифру числа (%)
• увеличиваем сумму на значение цифры (s+=d)
• отсекаем последнюю цифру числа (//)
N
d
123
s
0
начальные значения
? Когда остановиться?
12
3
3
1
2
5
0
1
6
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
while N != 0:
...
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
117
Сумма цифр числа
начало
обнулить
сумму
ввод N
s= 0
N != 0?
да
d = N % 10
s += d
N = N // 10
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
выполнять
"пока N != 0"
нет
вывод s
конец
http://kpolyakov.spb.ru

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

Программирование (Python), 8 класс
118
Сумма цифр числа
N = int(input("Введите целое число")); N1= N
s = 0
while N != 0:
d = N % 10
s += d
N = N // 10
print("Сумма цифр числа", N1,
N, " равна", s)
? Что плохо?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

119. Задачи

Программирование (Python), 8 класс
119
Задачи
«A»: Напишите программу, которая вводит с клавиатуры
натуральное число и выводит цифры его записи в
троичной системе счисления (начиная с последней).
Пример:
Введите число: 12
0
1
1
«B»: Напишите программу, которая получает с
клавиатуры натуральное число и определяет,
сколько раз в его двоичной записи встречается
цифра 1.
30 = 111102
Пример:
Введите число? 30
Единиц: 4
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

120. Задачи

Программирование (Python), 8 класс
120
Задачи
«C»: Напишите программу, которая получает с
клавиатуры натуральное число и находит
наибольшую цифру в его десятичной записи.
Пример:
Введите число: 311
Наибольшая цифра: 3
«D»: Напишите программу, которая получает с
клавиатуры натуральное число и определяет, есть
ли в его десятичной записи одинаковые цифры,
стоящие рядом.
Пример:
Введите число: 553
Введите число: 535
Ответ: да.
Ответ: нет.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

121. Разложение числа на простые сомножители

Программирование (Python), 8 класс
121
Разложение числа на простые сомножители
1260 = 2 · 2 · 3 · 3 · 5 · 7
простые числа
Основная теорема арифметики: такое
разложение единственно.
Введите число: 1260
2
2
3
3
5
7
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

122. Разложение числа на простые сомножители

Программирование (Python), 8 класс
122
Разложение числа на простые сомножители
1260 = 2 · 2 · 3 · 3 · 5 · 7
d = 2
пока N > 1:
если N делится на d:
print( d )
N //= d
иначе:
d += 1
N
d
экран
1260
2
2
630
315
2
3
105
3
3
35
4
35
5
7
6
7
7
5
7
1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

123. Разложение числа на простые сомножители

Программирование (Python), 8 класс
123
Разложение числа на простые сомножители
N = int(input("Введите целое число"))
d = 2
while N > 1:
if N % d == 0:
print( d )
N //= d
else:
# делится на d
# следующий делитель d
d += 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

124. Задачи

Программирование (Python), 8 класс
124
Задачи
«A»: Напишите программу, которая получает с
клавиатуры натуральное число и выводит все его
простые сомножители в одну строчку.
Пример:
Введите число: 1260
1*2*2*3*3*5*7
«B»: Напишите программу, которая получает с
клавиатуры натуральное число и определяет,
сколько у него различных простых делителей.
Пример:
Введите число? 1260
Ответ: 4
1260 = 22·32·5·7
2, 3, 5, 7
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

125. Задачи

Программирование (Python), 8 класс
125
Задачи
«C»: Напишите программу, которая получает с
клавиатуры натуральное число и находит сумму
всех его различных простых делителей.
Пример:
1260 = 22·32·5·7
Введите число: 1260
Ответ: 17
2+3+5+7
«D»: Напишите программу, которая получает с
клавиатуры натуральное число и определяет, есть
ли в его разложении одинаковые делители.
Пример:
Введите число: 1260
Введите число: 210
Ответ: да.
Ответ: нет.
210 = 2·3·5·7
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

126. Алгоритм Евклида

Программирование (Python), 8 класс
126
Алгоритм Евклида
Задача. Найти наибольший общий делитель (НОД) двух
натуральных чисел.
Заменяем большее из двух чисел разностью
большего и меньшего до тех пор, пока они не
станут равны. Это и есть НОД.
НОД(a,b)= НОД(a-b, b)
= НОД(a, b-a)
Евклид
(365-300 до. н. э.)
Пример:
НОД (14, 21) = НОД (14, 21-14) = НОД (14, 7)
= НОД (7, 7) = 7
много шагов при большой разнице чисел:
НОД (1998, 2) = НОД (1996, 2) = … = 2
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

127. Алгоритм Евклида

Программирование (Python), 8 класс
127
Алгоритм Евклида
начало
a = b?
да
конец
нет
нет
b=b-a
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
a > b?
да
a=a-b
http://kpolyakov.spb.ru

128. Алгоритм Евклида

Программирование (Python), 8 класс
128
Алгоритм Евклида
while a != b:
if a > b:
a -=
= ab- b
else:
b -=
= ba- a
как заменить?
? Где будет НОД? Как его вывести?
? Как вывести НОД в формате НОД(14,21) = 7?
? А без дополнительных переменных?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

129. Модифицированный алгоритм Евклида

Программирование (Python), 8 класс
129
Модифицированный алгоритм Евклида
Заменяем большее из двух чисел остатком от деления
большего на меньшее до тех пор, пока меньшее не
станет равно нулю. Тогда большее — это НОД.
НОД(a,b)= НОД(a % b, b)
= НОД(a, b % a)
Пример:
НОД (14, 21) = НОД (14, 7) = НОД (0, 7) = 7
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

130. Модифицированный алгоритм

Программирование (Python), 8 класс
130
Модифицированный алгоритм
while a != 0 and b != 0:
if a > b:
a = a % b
else:
b = b % a
? Где будет НОД? Как его вывести?
if a != 0:
print(a)
else:
print(b)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
print( a+b
??? )
http://kpolyakov.spb.ru

131. В стиле Python

Программирование (Python), 8 класс
131
В стиле Python
while b!=0:
a, b = b, a % b
Почему работает?
print(a)
заменить a на b и b на
(a % b)
?
a
b
a
b
21
14
14
21
14
7
21
14
7
0
14
7
! a > b!
7
0
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

132. В других языках программирования

Программирование (Python), 8 класс
132
В других языках программирования
Паскаль:
while (a<>0) and
(b<>0) do
if a>b then
a:= a mod b
else
b:= b mod a;
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
С++:
while (a!=0 && b!=0)
{
if (a > b)
a = a % b;
else
b = b % a;
}
http://kpolyakov.spb.ru

133. Задачи

Программирование (Python), 8 класс
133
Задачи
«A»: Ввести с клавиатуры два натуральных числа и найти их
НОД с помощью алгоритма Евклида.
Пример:
Введите два числа:
21 14
НОД(21,14)=7
«B»: Ввести с клавиатуры два натуральных числа и найти их
НОД с помощью модифицированного алгоритма
Евклида. Заполните таблицу:
a
64168
358853
6365133
17905514
549868978
b
82678
691042
11494962
23108855
298294835
НОД(a,b)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

134. Задачи

Программирование (Python), 8 класс
134
Задачи
«C»: Ввести с клавиатуры два натуральных числа и сравнить
количество шагов цикла для вычисления их НОД с
помощью обычного и модифицированного алгоритмов
Евклида.
Пример:
Введите два числа:
1998 2
НОД(1998,2)=2
Обычный алгоритм: 998
Модифицированный: 1
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

136. Обработка потока данных

Программирование (Python), 8 класс
136
Обработка потока данных
Задача. На вход программы поступает поток данных —
последовательность целых чисел, которая
заканчивается нулём. Требуется найти сумму
элементов этой последовательности.
while x!=0:
# добавить x к сумме
# x = следующее число
? Откуда возьмётся x в первый раз?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

137. Обработка потока данных

Программирование (Python), 8 класс
137
Обработка потока данных
s = 0
x = int(input()) # первое число
while x!=0:
s += x
x = int(input()) # ввести следующее
print("Сумма ", s)
? Как найти количество чисел?
? Как найти сумму положительных?
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

138. Задачи

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

139. Задачи на циклы (дополнительные)

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

140. Задачи

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

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

Программирование (Python), 8 класс
141
Цикл по переменной
Задача. Вывести на экран степени числа 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

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

Программирование (Python), 8 класс
142
Цикл по переменной
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

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

Программирование (Python), 8 класс
143
Цикл по переменной
Задача. Найти сумму чисел от 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

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

Программирование (Python), 8 класс
144
Цикл по переменной
Задача. Найти сумму чётных чисел от 2 до 1000.
S = 0
for i in range(2,1001):
if i % 2 == 0:
S += i
? Что плохо?
шаг
S = 0
for i in range(2,1001, 2 ):
S += i
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

145. В других языках программирования

Программирование (Python), 8 класс
145
В других языках программирования
Паскаль:
С:
S:= 0;
for i=1 to 1000 do
S:= S + i;
int S, i;
S = 0;
for (i=1; i<=1000; i++)
S += i;
i=i+1;
шаг только 1 или
–1 (downto)
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
S=S+i;
http://kpolyakov.spb.ru

146. Задачи

Программирование (Python), 8 класс
146
Задачи
«A»: Напишите программу, которая находит количество
четырёхзначных чисел, которые делятся на 7.
«B»: Ипполит задумал трёхзначное число, которое при
делении на 15 даёт в остатке 11, а при делении на
11 даёт в остатке 9. Напишите программу, которая
находит все такие числа.
«C»: С клавиатуры вводится натуральное число N.
Программа должна найти факториал этого числа
(обозначается как N!) – произведение всех
натуральных чисел от 1 до N. Например,
5! = 1 • 2 • 3 • 4 • 5 = 120.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

147. Задачи

Программирование (Python), 8 класс
147
Задачи
«D»: Натуральное число называется числом
Армстронга, если сумма цифр числа, возведенных
в N-ную степень (где N – количество цифр в числе)
равна самому числу. Например, 153 = 13 + 53 + 33.
Найдите все трёхзначные Армстронга.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

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

Программирование (Python), 8 класс
149
Проверка числа на простоту
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

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

Программирование (Python), 8 класс
150
Проверка числа на простоту
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

151. Если искать все делители…

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

152. Задачи

Программирование (Python), 8 класс
152
Задачи
«A»: Напишите программу, которая получает
натуральное число и определяет, простое ли это
число. Если число составное, программа должна
вывести количество его делителей.
Пример 1:
Введите число: 19
19 – простое число
Пример 2:
Введите число: 28
28 – составное число
делителей: 6
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

153. Задачи

Программирование (Python), 8 класс
153
Задачи
«B»: Напишите программу, которая получает
натуральное число и определяет, простое ли это
число. Если число составное, программа должна
вывести количество его чётных делителей.
Подсказка: нужен ещё один счётчик.
Пример 1:
Введите число: 19
19 – простое число
Пример 3:
Введите число: 1260
Пример 2:
Введите число: 28
1260 – составное число
28 – составное число
четных делителей: 24
четных делителей: 4
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

154. Задачи

Программирование (Python), 8 класс
154
Задачи
«С»: Напишите программу, которая получает
натуральные числа a и b и определяет, сколько
простых чисел есть на отрезке [a, b].
Пример 1:
Введите a и b: 5 23
Простых чисел: 7
Пример 2:
Введите a и b: 5 5
Простых чисел: 1
Пример 3:
Введите a и b: 1234 5678
Простых чисел: 545
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

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

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

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

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

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

Программирование (Python), 8 класс
157
Обращение к элементу массива
НОМЕР
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

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

Программирование (Python), 8 класс
158
Обращение к элементу массива
ИНДЕКС элемента массива: 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

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

Программирование (Python), 8 класс
159
Создание массива
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

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

Программирование (Python), 8 класс
160
Что неверно?
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

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

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

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

Программирование (Python), 8 класс
162
Заполнение массива
[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

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

Программирование (Python), 8 класс
163
Заполнение массива в обратном порядке
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

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

Программирование (Python), 8 класс
164
Заполнение массива в обратном порядке
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

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

Программирование (Python), 8 класс
165
Вывод массива на экран
Весь массив сразу:
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

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

Программирование (Python), 8 класс
166
Вывод массива на экран (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

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

Программирование (Python), 8 класс
167
Ввод с клавиатуры
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

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

Программирование (Python), 8 класс
169
В других языках программирования
Паскаль:
объявление массива
const N = 10;
var A: array[0..N-1] of integer;
...
for i:=0 to N-1 do
A[i] = i;
for i:=0 to N-1 do
write(A[i], ' ');
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

169. В других языках программирования

Программирование (Python), 8 класс
170
В других языках программирования
С++:
int A[N], i;
for (i = 0; i < N; i++)
A[i] = i;
for (i = 0; i < N; i++)
cout << A[i] << " ";
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
! Нумерация элементов
всегда с нуля!
http://kpolyakov.spb.ru

170. В других языках программирования

Программирование (Python), 8 класс
171
Задачи
«A»: 1) Заполните все элементы массива из 10
элементов значением X , введённым с клавиатуры.
2) Заполните массив из 10 элементов
последовательными натуральными числами,
начиная с X (значение X введите с клавиатуры).
«B»: 1) Заполните массив из 10 элементов
натуральными числами в порядке убывания. С
клавиатуры вводится значение X. Последний
элемент должен быть равен X, предпоследний равен
X+1 и т.д.
2) Заполните массив из 10 элементов степенями
числа 2 (от 21 до 2N), так чтобы первый элемент был
равен 2, следующий – 4, следующий – 8 и т.д.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

171. Задачи

Программирование (Python), 8 класс
172
Задачи
«C»: 1) Заполните массив из 10 элементов степенями
числа 2, начиная с конца, так чтобы последний
элемент массива был равен 1, а каждый
предыдущий был в 2 раза больше следующего.
2) С клавиатуры вводится целое число X. Заполните
массив из 11 элементов целыми числами, так чтобы
средний элемент массива был равен X, слева от
него элементы стояли по возрастанию, а справа – по
убыванию. Соседние элементы отличаются на
единицу. Например,
при X = 3 массив из 5 элементов заполняется так: 1
2 3 2 1.
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

172. Задачи

Программирование (Python), 8 класс
173
Заполнение случайными числами
из библиотеки
(модуля) 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

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

Программирование (Python), 8 класс
174
Обработка элементов массива
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

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

Программирование (Python), 8 класс
175
Обработка элементов массива
Вывести числа, на 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

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

Программирование (Python), 8 класс
176
Обработка элементов массива
Заполнить нулями:
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

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

Программирование (Python), 8 класс
177
Задачи-2
«A»: Напишите программу, которая заполняет массив из
10 элементов случайными числами в диапазоне
[0,10], выводит его на экран, а затем выводит на
экран квадраты всех элементов массива.
Пример:
Массив: 5 6 2 3 1 4 8 7
Квадраты: 25 36 4 9 1 16 64 49
«B»: Напишите программу, которая заполняет массив из
10 элементов случайными числами в диапазоне
[100,300] и выводит его на экран. После этого на экран
выводятся средние цифры (число десятков) всех
чисел, записанных в массив.
Пример:
Массив: 142 224 135 257 167 295 126 223 138 270
Число десятков: 4 2 3 5 6 9 2 2 3 7
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

177. Задачи-2

Программирование (Python), 8 класс
178
Задачи-2
«C»: Напишите программу, которая заполняет массив из
10 элементов случайными числами в диапазоне
[100,500] и выводит его на экран. После этого на экран
выводятся суммы цифр всех чисел, записанных в
массив.
Пример:
Массив: 162 425 340 128 278 195 326 414 312 177
Суммы цифр: 9 11 7 11 17 15 11 9 6 15
К.Ю. Поляков, Е.А. Ерёмин, 2018-2024
http://kpolyakov.spb.ru

178. Задачи-2

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

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

Программирование (Python), 8 класс
180
Сумма элементов массива
Задача. Найти сумму элементов массива из 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

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

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

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

Программирование (Python), 8 класс
182
Сумма не всех элементов массива
Задача. Найти сумму чётных элементов массива.
? Что делаем с нечётными?
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

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

Программирование (Python), 8 класс
183
Сумма не всех элементов массива
Задача. Найти сумму чётных элементов массива.
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

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

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

184. Задачи

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

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

Программирование (Python), 8 класс
186
Подсчёт элементов по условию (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

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

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

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

Программирование (Python), 8 класс
188
Среднее арифметическое
Задача. Найти среднее арифметическое элементов
массива, которые больше 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

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

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

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

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

190. Задачи

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

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

Программирование (Python), 8 класс
192
Перестановка пар соседних элементов
Задача. Массив 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

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

Программирование (Python), 8 класс
193
Перестановка пар соседних элементов
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

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

Программирование (Python), 8 класс
194
Перестановка пар соседних элементов
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

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

Программирование (Python), 8 класс
195
Реверс массива
Задача. Переставить элементы массива в обратном
порядке (выполнить реверс).
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

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

Программирование (Python), 8 класс
196
Реверс массива
(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

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

Программирование (Python), 8 класс
197
Задачи
«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

197. Задачи

Программирование (Python), 8 класс
198
Задачи
«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

198. Задачи

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

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

Программирование (Python), 8 класс
200
Поиск максимального элемента
? Какие переменные нужны?
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

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

Программирование (Python), 8 класс
201
Поиск максимального элемента
начинаем с 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

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

Программирование (Python), 8 класс
202
Поиск максимального элемента (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

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

Программирование (Python), 8 класс
203
Номер максимального элемента
Задача. Найти в массиве максимальный элемент и его
номер.
? Какие переменные нужны?
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

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

Программирование (Python), 8 класс
204
Номер максимального элемента
! Если знаем 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

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

Программирование (Python), 8 класс
205
Задачи (без 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

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

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

206. Задачи

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

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

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

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

Программирование (Python), 8 класс
209
Поиск максимума (минимума)
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

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

Программирование (Python), 8 класс
210
Поиск максимума (минимума)
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

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

Программирование (Python), 8 класс
211
Поиск максимума (минимума) – 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

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

Программирование (Python), 8 класс
212
Максимум не из всех
Задача: с клавиатуры вводятся числа в
диапазоне [-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

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

Программирование (Python), 8 класс
213
Минимум не из всех
По условию: 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

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

Программирование (Python), 8 класс
214
Если диапазон неизвестен…
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

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

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

215. Задачи

Программирование (Python), 8 класс
216
Задачи
«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

216. Задачи

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

217. Задачи

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

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

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

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

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

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

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

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

Программирование (Python), 8 класс
222
Сравнение строк
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

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

Программирование (Python), 8 класс
223
Обращение к символу по номеру
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

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

Программирование (Python), 8 класс
224
Посимвольная обработка строк
! Строка неизменна!
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

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

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

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

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

226. Задачи

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

227. Задачи

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

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

Программирование (Python), 8 класс
229
Срезы строк (выделение части строки)
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

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

Программирование (Python), 8 класс
230
Срезы строк
Срезы с отрицательными индексами:
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

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

Программирование (Python), 8 класс
231
Операции со строками
Удаление:
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

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

Программирование (Python), 8 класс
232
Поиск в строках
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

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

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

233. Задачи

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

234. Задачи

Программирование (Python), 8 класс
235
Преобразования «строка» «число»
Из строки в число:
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

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

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

236. Задачи

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

237. Задачи

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

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

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