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

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

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

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

2. Что такое алгоритм?

2
Алгоритмизация и программирование, язык Python
Что такое алгоритм?
Алгоритм — это точное описание
порядка действий, которые должен
выполнить исполнитель для решения
задачи за конечное время.
Исполнитель – это устройство или
одушёвленное существо (человек),
способное понять и выполнить
команды, составляющие алгоритм.
Мухаммед ал-Хорезми
(ок. 783–ок. 850 гг.)
Формальные исполнители: не понимают
(и не могут понять) смысл команд.
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

3. Свойства алгоритма

3
Алгоритмизация и программирование, язык Python
Свойства алгоритма
Дискретность — алгоритм состоит из отдельных команд,
каждая из которых выполняется за конечное время.
Детерминированность (определённость) — при каждом
запуске алгоритма с одними и теми же исходными
данными получается один и тот же результат.
Понятность — алгоритм содержит только команды,
входящие в систему команд исполнителя.
Конечность (результативность) — для корректного
набора данных алгоритм должен завершаться через
конечное время.
Корректность — для допустимых исходных данных
алгоритм должен приводить к правильному результату.
Массовость — алгоритм можно использовать для
разных исходных данных.
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

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

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

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

7. Задания

7
Алгоритмизация и программирование, язык Python
Задания
«4»: Вывести на экран текст «лесенкой»
Вася
пошел
гулять
«5»: Вывести на экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

8. Сложение чисел

8
Алгоритмизация и программирование, язык Python
Сложение чисел
Задача. Ввести с клавиатуры два числа и найти их сумму.
Протокол:
компьютер
Введите два целых числа
25
пользователь
30
25+30=55
компьютер считает сам!
? 1. Как ввести числа в память?
2. Где хранить введенные числа?
3. Как вычислить?
4. Как вывести результат?
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

9. Сумма: псевдокод

9
Алгоритмизация и программирование, язык Python
Сумма: псевдокод
ввести два числа
вычислить их сумму
вывести сумму на экран
Псевдокод – алгоритм на
русском языке с элементами
языка программирования.
! Компьютер не может исполнить псевдокод!
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

10. Переменные

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

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

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

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

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

13. Зачем нужен тип переменной?

Алгоритмизация и программирование, язык Python
13
Зачем нужен тип переменной?
Тип определяет:
• область допустимых значений
• допустимые операции
• объём памяти
• формат хранения данных
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

15
Алгоритмизация и программирование, язык Python
Ввод значения с клавиатуры
a
5
! 1. Программа ждет, пока пользователь введет
значение и нажмет Enter.
2. Введенное значение записывается в
переменную a (связывается с именем a)
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

23. Задания

Алгоритмизация и программирование, язык Python
23
Задания
«3»: Ввести три числа, найти их сумму.
Пример:
Введите три числа:
4
5
7
4+5+7=16
«4»: Ввести три числа, найти их сумму и
произведение.
Пример:
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

24. Задания

24
Алгоритмизация и программирование, язык Python
Задания
«5»: Ввести три числа, найти их сумму, произведение
и среднее арифметическое.
Пример:
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.333333
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

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

27. Деление

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

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

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

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

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

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

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

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

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

32. Задания

32
Алгоритмизация и программирование, язык Python
Задания
«3»: Ввести три числа: цену пирожка (два числа: рубли, потом –
копейки) и количество пирожков. Найти сумму, которую
нужно заплатить (рубли и копейки)
Пример:
Стоимость пирожка:
12 50
Сколько пирожков:
5
К оплате: 62 руб. 50 коп.
«4»: Ввести число, обозначающее количество секунд. Вывести
то же самое время в часах, минутах и секундах.
Пример:
Число секунд:
8325
2 ч. 18 мин. 45 с
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

33. Задания

33
Алгоритмизация и программирование, язык Python
Задания
«5»: Занятия в школе начинаются в 8-30. Урок длится
45 минут, перерывы между уроками – 10 минут.
Ввести номер урока и вывести время его
окончания.
Пример:
Введите номер урока:
6
13-50
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

34. Случайные числа

34
Алгоритмизация и программирование, язык Python
Случайные числа
Случайно…
• встретить друга на улице
• разбить тарелку
• найти 10 рублей
• выиграть в лотерею
Случайный выбор:
• жеребьевка на
соревнованиях
• выигравшие номера
в лотерее
Как получить случайность?
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

35. Случайные числа на компьютере

35
Алгоритмизация и программирование, язык Python
Случайные числа на компьютере
Электронный генератор
• нужно специальное устройство
• нельзя воспроизвести результаты
Псевдослучайные числа – обладают свойствами
случайных чисел, но каждое следующее число
вычисляется по заданной формуле.
Метод середины квадрата (Дж. фон Нейман)
зерно
564321
318458191041
458191
в квадрате • малый период
(последовательность
повторяется через 106 чисел)
209938992481
938992
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

36. Линейный конгруэнтный генератор

36
Алгоритмизация и программирование, язык Python
Линейный конгруэнтный генератор
X = (a*X+b) % c | интервал от 0 до c-1
X = (X+3) % 10 | интервал от 0 до 9
X = 0 → 3 → 6 → 9 → 2 → 5 → 8
8 → 1 → 4 → 7 → 0
зерно
зацикливание
! Важен правильный выбор параметров
a, b и с!
Компилятор GCC:
a = 1103515245
b = 12345
c = 231
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

54. Срезы

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

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

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

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

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

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

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

58. Задачи

58
Алгоритмизация и программирование, язык Python
Задачи
«3»: Ввести с клавиатуры пароль (символьную строку), если
его длина меньше, чем 6 символов, вывести сообщение
«Слишком короткий пароль!», иначе вывести сообщение
«ОК».
Пример:
Введите пароль:
12345
Слишком короткий пароль!
Пример:
Введите пароль:
123456789
ОК.
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

59. Задачи

59
Алгоритмизация и программирование, язык Python
Задачи
«4»: Ввести с клавиатуры пароль (символьную строку). Если
его длина меньше, чем 6 символов, вывести сообщение
«Слишком короткий пароль!». Если пароль начинается с
букв «qwerty» вывести сообщение «Ненадёжный
пароль!». Если ошибок не было, вывести сообщение
«ОК».
Пример:
Введите пароль:
qwerty12345
Ненадёжный пароль!
Пример:
Введите пароль:
asdUTY7sakh
ОК.
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

60. Задачи

60
Алгоритмизация и программирование, язык Python
Задачи
«5»: Ввести с клавиатуры имя файла. Если расширение
имени файла – htm, html или php, выдать сообщение
«Это веб-страница!», иначе выдать сообщение «Что-то
другое.»
Пример:
Введите имя файла:
C:\DOC\Сайт\index.html
Это веб-страница!
Пример:
Введите имя файла:
C:\Документы\Приказ.doc
Что-то другое.
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

69. Задачи

69
Алгоритмизация и программирование, язык Python
Задачи
«3»: Ввести с клавиатуры количество повторений и вывести
столько же раз какое-нибудь сообщение.
Пример:
Сколько раз:
5
Привет!
Привет!
Привет!
Привет!
Привет!
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

70. Задачи

70
Алгоритмизация и программирование, язык Python
Задачи
«4»: Ввести с клавиатуры натуральное число и определить,
сколько раз в его записи встречается цифра 1.
Пример:
Введите число:
51211
3
«5»: Ввести с клавиатуры натуральное число и найти сумму
значений его цифр.
Пример:
Введите число:
1234
Cумма цифр 10
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

71
Алгоритмизация и программирование, язык Python
Алгоритм Евклида
Алгоритм Евклида. Чтобы найти НОД двух натуральных
чисел, нужно вычитать из большего числа меньшее до
тех пор, пока они не станут равны. Это число и есть
НОД исходных чисел.
НОД(14,21) = НОД(14,7) = НОД(7, 7) = 7
пока a != b:
если a > b:
a -= b # a = a - b
иначе:
b -= a # b = b - a
while a != b:
if a > b:
a -= b
else:
b -= a
НОД(1998,2) = НОД(1996,2) = … = НОД(2, 2) = 2
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

72
Алгоритмизация и программирование, язык Python
Алгоритм Евклида
Модифицированный алгоритм Евклида. Заменять
большее число на остаток от деления большего на
меньшее до тех пор, пока меньшее не станет равно
нулю. Другое (ненулевое) число и есть НОД чисел.
НОД(1998,2) = НОД(0,2) = 2
пока a!=0
???: and b!=0:
если a > b:
a = a % b
иначе:
b = b % a
если a != 0:
вывести a
иначе:
вывести b
© К.Ю. Поляков, 2015
? Какое условие?
? Как вывести
результат?
http://kpolyakov.spb.ru

73. Задачи

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

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

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

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

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

76. Задачи

76
Алгоритмизация и программирование, язык Python
Задачи
«3»: Ввести с клавиатуры число в двоичной системе
счисления. Определить, сколько в его записи единиц и
сколько нулей.
Пример:
Введите число:
1010100
Нулей: 4
Единиц: 3
«4»: Ввести с клавиатуры символьную строку. Если это
правильная запись двоичного числа, вывести сообщение
«Да», иначе вывести сообщение «Нет».
Пример:
Введите число:
Введите число:
1010100
abcd10
Да.
Нет.
© К.Ю. Поляков, 2015
http://kpolyakov.spb.ru

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

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

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

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

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

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

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

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