Python 1-Dars
Python 1-Dars
Программирование на
языке Python
9 класс
1. Повторение
2. Обработка потока данных
3. Обработка потока данных (цикл for)
4. Обработка массивов
5. Как разрабатывают программы
6. Процедуры
7. Функции
Программирование
на языке Python
1. Повторение
Вывод на экран
Текст:
print ( "a", "b" )
Значения переменных из памяти:
print ( a, b )
Арифметические выражения:
print ( a + 2*b )
Все вместе:
print ( a, "+", b, "=", a+b )
Подключение русского языка:
# coding: utf-8
Вывод на экран
С пробелами:
print ( a, b )
Без пробелов:
print ( a, b, sep
sep = "" )
Без перехода на новую строку:
print ( a, b, end = "" )
Целое число:
print( 'Введите целое число:' )
n = int
int (input())
или так:
n = int
int (input('Введите целое число:'))
Присваивание
а = 6
b = 4
а = 2*а + 3*b # a=2*6+3*4=24
b = a / 2 * b # b=(24/2)*4=48
Остаток от деления – %
a = 1234
d = a % 10; print( d ) 4
a = a // 10 # 123
d = a % 10; print( d ) 3
a = a // 10 # 12
d = a % 10; print( d ) 2
a = a // 10 # 1
d = a % 10; print( d ) 1
a = a // 10 # 0
Задания
«3»: Ввести три числа: цену пирожка (два числа: рубли, потом –
копейки) и количество пирожков. Найти сумму, которую
нужно заплатить (рубли и копейки)
Пример:
Стоимость пирожка:
12 50
Сколько пирожков:
5
К оплате: 62 руб. 50 коп.
«4»: Ввести число, обозначающее количество секунд. Вывести
то же самое время в часах, минутах и секундах.
Пример:
Число секунд:
8325
2 ч. 18 мин. 45 с
Задания
«5»: Занятия в школе начинаются в 8-30. Урок длится
45 минут, перерывы между уроками – 10 минут.
Ввести номер урока и вывести время его
окончания.
Пример:
Введите номер урока:
6
13-50
Условный оператор
if a > b:
# что делать, если a > b
else:
# что делать, если a <= b
отступы! a = 12
a = 12 if a > 2: # истина
if a > 20:# ложь a = 15
a = 15 else:
print ( a ) # 12 a = 8
print ( a ) # 15
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 13
Цепочка условий
cost = 1500
if cost < 1000:
print ( "Скидок нет." )
elif cost < 2000: первое
сработавшее
print ( "Скидка 2%." ) условие
elif cost < 5000:
print ( "Скидка 5%." )
else:
print ( "Скидка 10%." )
Сложные условия
Задача: набор сотрудников в возрасте 25-40 лет
(включительно). сложное условие
Сложные условия
Задача: набор сотрудников в возрасте 25-40 лет
(включительно). сложное условие
if v < 25 or v > 40 :
print("не подходит")
else:
print("подходит")
Задачи
«3»: Напишите программу, которая получает три числа -
рост трёх спортсменов, и выводит сообщение «По
росту.», если они стоят по возрастанию роста, или
сообщение «Не по росту!», если они стоят не по
росту.
Пример:
Введите рост трёх спортсменов:
165 170 172
По росту.
Пример:
Введите рост трёх спортсменов:
175 170 172
Не по росту!
Задачи
«4»: Напишите программу, которая получает номер
месяца и выводит соответствующее ему время года
или сообщение об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.
Задачи
«5»: Напишите программу, которая получает возраст
человека (целое число, не превышающее 120) и
выводит этот возраст со словом «год», «года» или
«лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.
Цикл с условием
k=0
while k < 10:
print ( "Привет" ) ? При каком условии
заканчивает работу?
k += 1
k >= 10
k = 10
while k > 0:
print ( "Привет" ) ? При каком условии
заканчивает работу?
k -= 1
k <= 0
Цикл по переменной
for i in range(N): сделай
N раз
...
[0,1,2,3] N раз
[0,1,2,3,4]
for i in range(4): s = 0
print(i) for i in range(5):
0 s += i
1 ? Что выведет? print(s)
2 10
3
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 21
Цикл по переменной
от до (не включая!)
s = 0
for i in range(2,5): s=2+3+4=9
s += i 9
print(s) [2,3,4]
Кумир: Паскаль:
s := 0 s := 0;
нц для i от 2 до 4 for i:=2 to 4 do
s := s + i s := s + i;
кц writeln(s);
вывод s
Цикл по переменной
[2,3,
s = 8 …,14] ? Сколько раз?
Задачи
«3»: Ввести число N и вывести на экран все
степени числа 2 от 21 до 2N.
Пример:
Введите N:
3
2 4 8
Задачи
«5»: Натуральное число называется числом
Армстронга, если сумма цифр числа,
возведенных в N-ную степень (где N –
количество цифр в числе) равна самому
числу. Например, 153 = 13 + 53 + 33. Найдите
все трёхзначные числа Армстронга.
Задачи
«6»: Простое число – это число, которое делится
только само на себя и на 1. Ввести
натуральное число N и вывести все простые
числа в диапазоне от 2 до N.
Программирование
на языке Python
2. Обработка потока
данных
Найди ошибку!
k = 0
x = int(input())
while x != 0:
if x > 0:
k += 1 x = int(input())
print( k )
Найди ошибку!
k=0 x = int(input())
while x !=
== 0:
if x > 0:
k += 1
x = int(input())
print(k)
Задачи
«3»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить, сколько было введено
положительных и сколько отрицательных чисел.
Пример:
5
3
-1
0
Положительных: 2
Отрицательных: 1
Задачи
«4»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить, сколько было введено
двузначных натуральных чисел, и сколько других.
Пример:
15
7
13
-12
1
0
Двузначных: 2
Других: 3
Задачи
«5»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить, сколько было введено
двузначных натуральных чисел, которые
оканчиваются на «5», и сколько других.
Пример:
15
7
13
-12
0
Двузначные, оканчиваются на 5: 1
Другие: 3
Задачи
«6»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить, сколько было введено
простых натуральных чисел (которые делятся только
сами на себя и на 1), и сколько составных.
Пример:
15
7
13
-12
6
0
Простых: 2
Составных: 3
сумма = 0
пока не введён 0:
если x оканчивается на "5":
сумма += x
"Бесконечный" цикл
s=0
while True:
x = int(input()) выйти из
if x == 0: break
break цикла
if x % 10 == 5:
s += x ? Что плохо?
print( s )
Условия отбора
Положительные числа:
if x > 0: ...
Числа, делящиеся на 3:
if x % 3 == 0: ...
Числа, оканчивающиеся на 6:
if x % 10 == 6: ...
Числа, делящиеся на 3 и оканчивающиеся на 6:
if x % 3 == 0 and x % 10 == 6: ...
Двузначные числа:
if 10 <= x and x <= 99: ...
? Как иначе?
сумма = 0
счётчик = 0
? Как вывести результат?
пока не введён 0:
если x оканчивается на "5":
сумма += x
счётчик += 1
Найди ошибку!
s=0 k=0
x = int(input())
while x != 0: s += x
if x % 10 == 5:
k += 1
if k == 01: x = int(input())
print("Ответ: нет")
else:
print("Ответ:", sk)
Задачи
«3»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить сумму тех введённых чисел,
которые делятся на 5.
Пример:
5
3
34
15
0
Ответ: 20
Задачи
«4»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить сумму тех введённых чисел,
которые делятся на 3 и заканчиваются на 1. Вывести
"нет", если таких чисел нет.
Пример: Пример:
5 5
31 31
18 18
21 41
15 15
0 0
Ответ: 21 Ответ: нет
Задачи
«5»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить, среднее арифметическое тех
введённых двузначных чисел, которые делятся на 5.
Вывести "нет", если таких чисел нет.
Пример: Пример:
5 5
3 3
35 315
185 185
34 34
15 17
0 0
Ответ: 25 Ответ: нет
Задачи
«6»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить, среднее арифметическое тех
введённых чисел, которые являются степенями
числа 2. Вывести "нет", если таких чисел нет.
Пример: Пример:
5 5
8 18
185 185
4 44
16 116
0 0
Ответ: 9.333 Ответ: нет
print(M)
if x > M: M = x
print(M)
print(M)
Максимум не из всех
Задача: с клавиатуры вводятся числа в
диапазоне [-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)
? Что плохо?
Минимум не из всех
По условию: x [-100;100]
Задачи
«3»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить минимальное и
максимальное из введённых чисел.
Пример:
5
13
34
15
0
Минимум: 5
Максимум: 34
Задачи
«4»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить минимальное и
максимальное из тех введённых чисел, которые
делятся на 3. Вывести "нет", если таких чисел нет.
Пример: Пример:
5 5
31 34
18 17
21 41
15 11
0 0
Минимум: 15 Ответ: нет
Максимум: 21
Задачи
«5»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить минимальное и
максимальное из тех введённых двузначных
натуральных чисел, которые оканчиваются на 6.
Вывести "нет", если таких чисел нет.
Пример: Пример:
6 6
36 32
18 176
26 41
15 11
0 0
Минимум: 26 Ответ: нет
Максимум: 36
Задачи
«6»: с клавиатуры вводятся числа, ввод завершается
числом 0. Определить минимальное из введённых
чисел Фибоначчи. Вывести "нет", если чисел
Фибоначчи в последовательности нет.
Числа Фибоначчи – это последовательность чисел, которая начинается
с двух единиц и каждое следующее число равно сумме двух
предыдущих: 1, 1, 2, 3, 5, 8, 13, …
Пример: Пример:
5 6
36 32
12 176
26 41
13 11
0 0
Ответ: 5 Ответ: нет
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
60
Программирование
на языке Python
3. Обработка потока
данных (цикл for)
N раз
for i in range(4): s = 0
print(i) for i in range(4):
0 s += i
1 ? Что выведет? print(s)
2 6
3
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 63
Задачи
«3»: с клавиатуры вводится число N, а затем – N целых
чисел. Определить, сколько было введено
положительных и сколько отрицательных чисел
(нули не считать!).
Пример:
5
1
3
-34
15
0
Положительных: 3
Отрицательных: 1
Задачи
«4»: с клавиатуры вводится число N, а затем – N целых
чисел. Определить сумму двузначных чисел (как
положительных, так и отрицательных). Если
двузначных чисел не было, вывести "нет".
Пример: Пример:
5 5
1 1
13 213
-34 -134
5 5
31 3
Ответ: 10 Ответ: нет
Задачи
«5»: с клавиатуры вводится число N, а затем – N целых
чисел. Определить минимальное и максимальное
среди двузначных чисел, которые делятся на 3. Если
таких чисел не было, вывести "нет".
Пример: Пример: Пример:
5 5 5
18 1 1
33 -18 23
98 -6 132
513 -21 6
31 32 32
Минимум: 18 Минимум: -21 Ответ: нет
Максимум: 33 Максимум: -18
Задачи
«6»: с клавиатуры вводится число N, а затем – N
натуральных чисел. Определить минимальное и
максимальное среди простых чисел (которые
делятся на сами не себя и на 1). Если таких чисел не
было, вывести "нет".
Пример: Пример:
5 5
41 12
15 25
198 132
163 6
39 39
Минимум: 5 Ответ: нет
Максимум: 163
Программирование
на языке Python
4. Обработка массивов
Подсчёт элементов
A = [1, 2, 3, 4, 5, 6, 7]
k = 0
for i in range(7): ? Что выведет?
if A[i] > 3: k += 1
print(k) 4
Кумир: Паскаль:
k := 0 k := 0;
нц для i от 1 до 7 for i:=1 to 7 do
если A[i] > 3 то if A[i] > 3 then
k := k + 1 k = k + 1;
все writeln(k);
кц
вывод k !
Элементы массива нумеруются с 1!
Подсчёт элементов
A = [1, 21, 3, 46, 53, 6, 17]
k = 0
for i in range(7): ? Что выведет?
if A[i] % 3 == 0: k += 1
print(k) 3
Варианты условий:
if A[i] % 10 == 6: k += 1 2
if(A[i] % 10 == 6 and
A[i] % 3 == 0): k += 1 1
if(A[i] >= 10 and
A[i] < 100): k += 1 4
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 74
Суммирование элементов
A = [1, 21, 3, 46, 53, 6, 118]
s = 0
for i in range(7): ? Что выведет?
if A[i] % 3 == 0: s += A[i]
print(s) 30
Варианты условий:
if A[i] % 10 == 6: s += A[i] 52
if(A[i] % 10 == 6 and
A[i] % 3 == 0): s += A[i] 6
if(A[i] >= 10 and
A[i] < 100): s += A[i] 120
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 75
Задачи
«3»: Напишите программу, которая находит в массиве
количество элементов, делящихся на 5.
Максимум
A = [1, 21, 3, 46, 53, 6, 117]
m = 0 меньше всех
for i in range(7): ? Что выведет?
Минимум
A = [1, 21, 3, 46, 53, 6, 117]
m = 999 больше всех
for i in range(7): ? Что выведет?
Задачи
«3»: Напишите программу, которая находит
минимальный и максимальный из чётных элементов
массива. Гарантируется, что все элементы массива
находятся в диапазоне [-100;100] и среди них есть
хотя бы один чётный элемент.
Задачи
«5»: Напишите программу, которая находит
минимальный из чётных элементов массива и его
номер. Если в массиве нет таких элементов, нужно
вывести слово "нет".
Пример:
Массив: [1, 12, 3, 4, 5, 18, 24]
Минимум: A[3] = 4
Пример:
Массив: [1, 13, 3, 19, 5, 71, 241]
Минимум: нет
Сортировка
Сортировка – это расстановка элементов массива в
заданном порядке (возрастания, убывания, …).
Было:
9 6 2 7 3 1 5 4 8 0
Стало:
0 1 2 3 4 5 6 7 8 9
! Основная операция –
перестановка элементов!
Перестановка элементов
3
Задача: поменять местами
содержимое двух ячеек памяти. x y
c = x 4
6 2 6
4
x = y
x = y
y = x
y = c
3
? Можно ли обойтись без c? ?
4
Python: x, y = y, x
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 83
Идея:
• найти минимальный элемент и поставить на первое
место (поменять местами с A[0])
• из оставшихся найти минимальный элемент и
поставить на второе место (поменять местами с
A[1]), и т.д.
N-1
? Сколько раз сделать цикл?
m = A[nM]
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 85
Python: m = min(A)
nM = A.index(m)
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 86
Сортировка выбором
A = [1, 21, 3, -46, 53, -6, 117]
N = len(A) # длина массива
for k in range(N-1): поиск
nM = k
0 минимального
(k,N):
for i in range(N):
if A[i] < A[nM]: перестановка
nM = i
A[k],A[nM] = A[nM],A[k]
print(A)
Задания
«3»: Заполнить массив из 10 элементов случайными
числами в интервале [0..99] и отсортировать его по
убыванию последней цифры.
Пример:
Исходный массив:
14 25 13 12 76 58 21 87 10 98
Результат:
98 58 87 76 25 14 13 12 21 10
Задания
«4»: Заполнить массив из 10 элементов случайными
числами в интервале [0..99] и отсортировать его по
возрастанию суммы цифр (подсказка: их всего две).
Пример:
Исходный массив:
14 25 13 12 76 58 21 87 10 98
Результат:
10 21 12 13 14 25 76 58 87 98
Задания
«5»: Заполнить массив из 10 элементов случайными
числами в интервале [0..100] и отсортировать
первую половину по возрастанию, а вторую – по
убыванию.
Пример:
Исходный массив:
14 25 13 30 76 58 32 11 41 97
Результат:
13 14 25 30 76 97 58 41 32 11
Программирование
(Python)
Как разрабатывают
программы?
V. Отладка
Поиск и исправление ошибок в программах:
• синтаксические – нарушение правил языка
программирования
• логические – ошибки в алгоритме
могут приводить к отказам – аварийным ситуациям
во время выполнения (run-time error)
библиотека функций
Отладка программы
Программа решения квадратного уравнения
2
ax 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="")
Тестирование
Тест 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
Отладочная печать
Идея: выводить все промежуточные результаты.
a = float(input())
b = float(input())
c = float(input())
print(a, b, c)
D = b*b - 4*a*a
print("D=", D)
...
Отладочная печать
Идея: выводить все промежуточные результаты.
Результат:
Введите 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* с ;
! Одна ошибка найдена!
Отладка программы
Тест 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
(2*a)
x1 = (-b+sqrt(D))/2*a
x2 = (-b-sqrt(D))/2*a
(2*a)
? Что неверно?
Документирование программы
• назначение программы
• формат входных данных
• формат выходных данных
• примеры использования программы
Назначение:
программа для решения уравнения
2
ax bx c 0
Формат входных данных:
значения коэффициентов a, b и c вводятся с
клавиатуры через пробел в одной строке
Документирование программы
Формат выходных данных:
значения вещественных корней уравнения;
если вещественных корней нет, выводится
слово «нет»
Примеры использования программы:
2
1. Решение уравнения x 5 x 6 0
Введите a, b, c: 1 -5 6
x1=4.791288 x2=0.208712
2
2. Решение уравнения x x 6 0
Введите a, b, c: 1 1 6
Нет.
Программирование
(Python)
Процедуры
Процедуры Функции
выполняют действия + возвращают некоторый
результат
? Процедура или функция?
а) рисует окружность на экране
б) определяет площадь круга
в) вычисляет значение синуса угла
г) изменяет режим работы программы
д) возводит число x в степень y
е) включает двигатель автомобиля
ж) проверяет оставшееся количество бензина в баке
з) измеряет высоту полёта самолёта
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 107
Простая процедура
define – определить
def printLine():
print("----------") ? Что делает?
... вызов
printLine() процедуры
...
какие-то
операторы
def printLine10():
print("----------")
параметр
def printLine10(): процедуры
print("-"*10)
def printLine( n ):
print("-"*n)
Процедура с параметром
Параметр – величина, от
которой зависит
работа процедуры.
def printLine( n ):
...
... ? Что делает?
printLine(10)
...
printLine(7) Аргумент – значение
printLine(5) параметра при
printLine(3) конкретном вызове.
Несколько параметров
символьная строка
def printLine(c, n):
? Что изменилось?
print(c*n)
? Как вызывать?
printLine( "+", 5 )
printLine( "+-+", 5 )
printLine( 5, "+" )
Задачи
«3»: Напишите процедуру, которая принимает параметр –
натуральное число N – и выводит на экран две линии из
N символов "–".
Пример:
Длина цепочки: 7
-------
-------
«4»: Напишите процедуру, которая принимает один
параметр – натуральное число N, – и выводит на
экран прямоугольник длиной N и высотой 3
символа.
Пример:
Длина прямоугольника: 7
ooooooo
o o
ooooooo
К.Ю. Поляков, 2017 http://kpolyakov.spb.ru
Python, 9 класс 114
Задачи
«5»: Напишите процедуру, которая выводит на экран
квадрат со стороной N символов. При запуске
программы N нужно ввести с клавиатуры.
Пример:
Сторона квадрата: 5
ooooo
o o
o o
o o
ooooo
Задачи
«6»: Напишите процедуру, которая выводит на экран
треугольник со стороной N символов. При запуске
программы N нужно ввести с клавиатуры.
Пример:
Сторона: 5
o
oo
ooo
oooo
ooooo
Рекурсия
Задача. Вывести на экран двоичный код натурального
числа.
def printBin( n ):
...
Алгоритм перевода через остатки:
while n!=0:
print(n % 2, end="") ? Что получится
при n = 6?
n = n // 2
Рекурсия
Чтобы вывести двоичную запись числа n, нужно сначала
вывести двоичную запись числа (n // 2), а за-
тем — его последнюю двоичную цифру, равную
(n % 2).
двоичная запись числа 6
Рекурсивная процедура
def printBin( n ): вызывает сама себя!
printBin(n % 2)
print(n % 2, end = "")
printBin(3)
бесконечные вызовы
printBin(1)
printBin(0)
printBin(0) ? Как исправить?
Рекурсивная процедура
def printBin( n ):
if n = 0: return ? Что получится?
printBin(6)
printBin(n // 2)
print(n % 2)
printBin(6)
printBin(3) рекурсия
заканчивается!
printBin(1)
printBin(0) 110
print(1 % 2)
print(3 % 2)
print(6 % 2)
Задачи
«A»: Напишите рекурсивную процедуру, которая
переводит число в восьмеричную систему.
Пример:
Введите число: 66
В восьмеричной: 102
«B»: Напишите рекурсивную процедуру, которая
переводит число в любую систему счисления с
основанием от 2 до 9.
Пример:
Введите число: 75
Основание: 6
В системе с основанием 6: 203
Задачи
«С»: Напишите рекурсивную процедуру, которая
переводит число в шестнадцатеричную систему.
Пример:
Введите число: 123
В шестнадцатеричной: 7B
«D»: Напишите рекурсивную процедуру, которая
переводит число в любую систему счисления с
основанием от 2 до 36.
Пример:
Введите число: 350
Основание: 20
В системе с основанием 20: HA
Программирование
(Python)
Функции
цел a, b вещ r
исходные данные
Avg результат
целые
? Тип результата?
def Avg(a, b):
return (a+b)/2 результат
функции
return – вернуть
x = 2; y = 5
sr = Avg(x, 2*y+8) 10
Вывод на экран:
x = 2; y = 5
sr = Avg(x, y+3) 5
print( Avg(12,7) ) 9.5
print( sr + Avg(x,12) ) 12
def Max(a,
if a > b
b):
then
? Как с её помощью найти
максимум из трёх?
return a
else:
return b
def Max3(a, b, c):
return Max( Max(a,b), c )
Задачи
«A»: Напишите функцию, которая вычисляет среднее
арифметическое пяти целых чисел.
Пример:
Введите 5 чисел: 1 2 3 4 6
Среднее: 3.2
«B»: Напишите функцию, которая находит количество
цифр в десятичной записи числа.
Пример:
Введите число: 751
Количество цифр: 3
Задачи
«С»: Напишите функцию, которая находит количество
нулей в двоичной записи числа.
Пример:
Введите число: 75
Количество нулей: 3
Логические функции
Логическая функция — это функция, возвращающая
логическое значения (да или нет).
• можно ли применять операцию?
• успешно ли выполнена операция?
• обладают ли данные каким-то свойством?
Логические функции
Задача. Составить функцию, которая возвращает
«True», если она получила чётное число и «False»,
если нечётное.
def Even( N ):
if N % 2 == 0:
def Even( N ):
return True
return (N % 2 == 0)
else:
return False
Рекурсивные функции
Рекурсивная функция — это функция, которая
вызывает сама себя.
Задача. Составить рекурсивную функцию, которая
вычисляет сумму цифр числа.
sumDig(12345) = 5 + sumDig(1234)
Рекурсивная функция
Сумма цифр числа N
Вход: натуральное число N. последняя цифра
Шаг 1: d = N % 10
Шаг 2: M = N // 10 число без
последней цифры
Шаг 3: s = сумма цифр числа M
Шаг 4: sum = s + d
Результат: sum.
d = N % 10
sum = sumDigRec(N // 10)
return sum + d
Задачи
«A»: Напишите логическую функцию, которая
возвращает значение «истина», если десятичная
запись числа заканчивается на цифру 0 или 1.
Пример:
Введите число: 1230
Ответ: Да
«B»: Напишите логическую функцию, которая
возвращает значение «истина», если переданное ей
число помещается в 8-битную ячейку памяти.
Пример:
Введите число: 751
Ответ: Нет
Задачи
«C»: Напишите логическую функцию, которая
возвращает значение «истина», если переданное ей
число простое (делится только на само себя и на
единицу).
Пример:
Введите число: 17
Число простое!
Пример:
Введите число: 18
Число составное!
Конец фильма