Программирование на языке Python
Простейшая программа
Вывод на экран
Задания
Сложение чисел
Сумма: псевдокод
Переменные
Имена переменных
Типы переменных
Зачем нужен тип переменной?
Как записать значение в переменную?
Ввод значения с клавиатуры
Ввод значения с клавиатуры
Ввод с подсказкой
Изменение значений переменной
Вывод данных
Вывод данных через format
Сложение чисел: простое решение
Сложение чисел: полное решение
Задания
Задания
Программирование на языке Python
Арифметическое выражения
Деление
Остаток от деления
Операторы // и %
Сокращенная запись операций
Ввод двух значений в одной строке
Задания
Задания
Случайные числа
Случайные числа на компьютере
Линейный конгруэнтный генератор
Генератор случайных чисел
Генератор случайных чисел
Задачи
Задачи
math.
Программирование на языке Python
Условный оператор
Условный оператор: неполная форма
Условный оператор
Знаки отношений
Вложенные условные операторы
Каскадное ветвление
Каскадное ветвление
Задачи (без функций min и max!)
Задачи
Задачи
Сложные условия
Сложные условия
Сложные условия
Задачи
Задачи
Задачи
Программирование на языке Python
Символьные строки
Символьные строки
Символьные строки
Срезы
Срезы строк
Операции со строками
Операции со строками
Функции строк
Функции строк
Функции строк
Функции строк
Задачи
Задачи
Задачи
Программирование на языке Python
Что такое цикл?
Повторения в программе
Блок-схема цикла
Как организовать цикл?
Сколько раз выполняется цикл?
Цикл с условием
Цикл с условием
Задачи
Задачи
Задачи
Алгоритм Евклида
Алгоритм Евклида
Задачи
Задачи
Обработка строк в цикле
Проверка символов
Задачи
Задачи
Цикл с переменной
Цикл с переменной
Цикл с переменной: другой шаг
Сколько раз выполняется цикл?
Задачи
Задачи
Программирование на языке Python
Что такое массив?
Что такое массив?
Массивы в Python: списки
Заполнение массива
Заполнение случайными числами
Вывод массива на экран
Создание списка
Индексация
Срезы
Использование срезов для изменения элементов в заданном диапазоне
Функция len()
Встроенные функции sum(), min(), max()
Операция конкатенации + и умножения на число *
Оператор принадлежности in
Отличие списков от строк
Задачи
Задачи
Задачи
Задачи
Методы добавления и удаления элементов
Методы добавления и удаления элементов
Методы добавления и удаления элементов
Задачи
Задачи
Задачи
Задачи
Методы списков
Методы списков
Методы списков
Методы списков
Методы списков
Методы списков
Методы списков
Методы списков
Методы списков
Задачи
Задачи
Задачи
Методы списков
Методы списков
Методы списков
Задачи
Задачи
Задачи
Задачи
Методы списков
Задачи
Списочные выражения
Списочные выражения
Списочные выражения
Списочные выражения
Списочные выражения
Задачи
Задачи
Задачи
Вложенные списки
Вложенные списки
Вложенные списки
Вложенные списки
Задачи
Задачи
Задачи
2.06M
Category: programmingprogramming

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

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


Простейшие программы
1

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

# Это пустая программа
? Что делает эта программа?
комментарии после #
не обрабатываются
кодировка utf-8
по умолчанию)
# coding: utf-8
# Это пустая программа
"""
Это тоже комментарий
"""
2

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

print ( "2+2=?" )
print ( "Ответ: 4" )
автоматический
переход на новую
строку
Протокол:
2+2=?
Ответ: 4
print ( '2+2=?' )
print ( 'Ответ: 4' )
3

4. Задания

«4»: Вывести на экран текст «лесенкой»
Вася
пошел
гулять
«5»: Вывести на экран рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ
4

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

Задача. Ввести с клавиатуры два числа и найти их сумму.
Протокол:
компьютер
Введите два целых числа
25
пользователь
30
25+30=55
компьютер считает сам!
? 1. Как ввести числа в память?
2. Где хранить введенные числа?
3. Как вычислить?
4. Как вывести результат?
5

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

ввести два числа
вычислить их сумму
вывести сумму на экран
Псевдокод – алгоритм на
русском языке с элементами
языка программирования.
! Компьютер не может исполнить псевдокод!
6

7. Переменные

Переменная – это величина, имеющая имя, тип
и значение. Значение переменной можно
изменять во время работы программы.
Значение
Имя
7

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

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

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

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'>
целое число (integer)
вещественное число
символьная строка
логическая
9

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

Тип определяет:
• область допустимых значений
• допустимые операции
• объём памяти
• формат хранения данных
10

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

оператор
присваивания
a = 5
a = 7
! При записи нового значения
старое удаляется из памяти!
a
5
7
Оператор – это команда языка
программирования (инструкция).
Оператор присваивания – это команда для
присваивания нового значения переменной.
11

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

a
5
! 1. Программа ждет, пока пользователь введет
значение и нажмет Enter.
2. Введенное значение записывается в
переменную a (связывается с именем a)
12

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

a = input()
b = input()
ввести строку с клавиатуры
и связать с переменной a
Протокол:
21
33
2133
с=a + b
print ( c )
? Почему?
! Результат функции input – строка символов!
преобразовать в
целое число
a = int( input() )
b = int( input() )
13

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

a = input ( "Введите число: " )
Введите число: 26
подсказка
? Что не так?
a = int( input("Введите число: ") )
14

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

a = 5
b = a + 2
a = (a + 2)*(b – 3)
b = b + 1
28
a
b
=(5+2)*(7-3)
5
7
=5+2
8
=7+1
15

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

print ( a )
значение
переменной
значение и
текст
print ( "Ответ: ", a )
перечисление через запятую
print ( "Ответ: ", a+b )
вычисление
выражения
print ( a, "+", b, "=", c )
2 + 3 = 5
через пробелы
print ( a, "+", b, "=", c, sep = "" )
2+3=5
убрать разделители
16

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

print ( a, "+", b, "=", c, sep = "" )
2+3=5
print ( "{}+{}={}".format(a, b, c ) )
17

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

a = int ( input() )
b = int ( input() )
c=a+b
print ( c )
? Что плохо?
18

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

print ( "Введите два числа: " )
a = int ( input() )
подсказка
b = int ( input() )
c=a+b
print ( a, "+", b, "=", c, sep="" )
Протокол:
компьютер
Введите два целых числа
25
пользователь
30
25+30=55
19

20. Задания

«3»: Ввести три числа, найти их сумму.
Пример:
Введите три числа:
4
5
7
4+5+7=16
«4»: Ввести три числа, найти их сумму и
произведение.
Пример:
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140
20

21. Задания

«5»: Ввести три числа, найти их сумму, произведение
и среднее арифметическое.
Пример:
Введите три числа:
4
5
7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.333333
21

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


Вычисления
22

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

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
c b5 3 1
a
d
2
перенос на
следующую строку
перенос внутри
скобок разрешён
23

24. Деление

Классическое деление:
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
24

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

% – остаток от деления
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
# 0
# 15
25

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

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
4
3
2
1
26

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

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
a += 1
увеличение на 1
27

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

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() )
28

29. Задания

«3»: Ввести три числа: цену пирожка (два числа: рубли, потом –
копейки) и количество пирожков. Найти сумму, которую
нужно заплатить (рубли и копейки)
Пример:
Стоимость пирожка:
12 50
Сколько пирожков:
5
К оплате: 62 руб. 50 коп.
«4»: Ввести число, обозначающее количество секунд. Вывести
то же самое время в часах, минутах и секундах.
Пример:
Число секунд:
8325
2 ч. 18 мин. 45 с
29

30. Задания

«5»: Занятия в школе начинаются в 8-30. Урок длится
45 минут, перерывы между уроками – 10 минут.
Ввести номер урока и вывести время его
окончания.
Пример:
Введите номер урока:
6
13-50
30

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

Случайно…
• встретить друга на улице
• разбить тарелку
• найти 10 рублей
• выиграть в лотерею
Случайный выбор:
• жеребьевка на
соревнованиях
• выигравшие номера
в лотерее
Как получить случайность?
31

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

Электронный генератор
• нужно специальное устройство
• нельзя воспроизвести результаты
Псевдослучайные числа – обладают свойствами
случайных чисел, но каждое следующее число
вычисляется по заданной формуле.
Метод середины квадрата (Дж. фон Нейман)
зерно
564321
318458191041
458191
в квадрате • малый период
(последовательность
повторяется через 106 чисел)
209938992481
938992
32

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

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
33

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

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)
34

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

from random import *
подключить все!
англ. random – случайный
Целые числа на отрезке [a,b]:
X = randint(10,60) # псевдослучайное число
Y = randint(10,60) # это уже другое число!
Генератор на [0,1):
X = random()
Y = random()
# псевдослучайное число
# это уже другое число!
35

36. Задачи

«3»: Игральный кубик бросается три раза (выпадает три случайных
значения). Сколько очков в среднем выпало?
Пример:
Выпало очков:
5 3 1
(5+3+1)/3=3
«4»: Игральный кубик бросается три раза (выпадает три случайных
значения). Из этих чисел составляется целое число, программа
должна найти его квадрат.
Пример:
Выпало очков:
1 2 3
Число 123
Его квадрат 15129
36

37. Задачи

«5»: Получить случайное трёхзначное число и вывести через
запятую его отдельные цифры.
Пример:
Получено число 123
сотни: 1
десятки: 2
единицы: 3
37

38. math.

math.ceil(X) – округление до ближайшего большего числа.
math.copysign(X, Y) - возвращает число, имеющее модуль такой же, как и у числа X, а знак - как у
числа Y.
math.fabs(X) - модуль X.
math.factorial(X) - факториал числа X.
math.floor(X) - округление вниз.
math.fmod(X, Y) - остаток от деления X на Y.
math.frexp(X) - возвращает мантиссу и экспоненту числа.
math.ldexp(X, I) - X * 2i. Функция, обратная функции math.frexp().
math.fsum(последовательность) - сумма всех членов последовательности. Эквивалент встроенной
функции sum(), но math.fsum() более точна для чисел с плавающей точкой.
math.isfinite(X) - является ли X числом.
math.isinf(X) - является ли X бесконечностью.
math.isnan(X) - является ли X NaN (Not a Number - не число).
math.modf(X) - возвращает дробную и целую часть числа X. Оба числа имеют тот же знак, что и X.
math.trunc(X) - усекает значение X до целого.
math.exp(X) - eX.
math.expm1(X) - eX - 1. При X → 0 точнее, чем math.exp(X)-1.
math.log(X, [base]) - логарифм X по основанию base. Если base не указан, вычисляется натуральный
логарифм.
math.log1p(X) - натуральный логарифм (1 + X). При X → 0 точнее, чем math.log(1+X).
math.log10(X) - логарифм X по основанию 10.
math.log2(X) - логарифм X по основанию 2. Новое в Python 3.3.
38

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


Ветвления
Условный Оператор
39

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

Задача: изменить порядок действий в зависимости от
выполнения некоторого условия.
полная
форма
да
нет
ветвления
A 10 > b 5?
M=a
M=b
вывод M
отступы
? Если a = b?
if a > b:
M = a
else:
M = b
40

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

M=a
да
b > a?
нет
M = a
if b > a:
M = b
M=b
неполная
форма
ветвления
вывод M
Решение в стиле Python:
M = max(a, b)
M = a if a > b else b
41

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

if a < b:
с = a
a = b
b = c
? Что делает?
b
a
4
6
2
6
4
? Можно ли обойтись
без переменной c?
Решение в стиле Python:
?
4
c
a, b = b, a
42

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

> <
больше, меньше
>=
больше или равно
<=
меньше или равно
==
равно
!= не равно
43

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

Задача: в переменных a и b записаны возрасты Андрея и
Бориса. Кто из них старше?
Сколько вариантов?
if a > b:
print("Андрей старше")
else:
if a == b:
print("Одного возраста")
else:
print("Борис старше")
?
? Зачем нужен?
вложенный
условный оператор
44

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

if a > b:
print("Андрей старше")
elif a == b:
print("Одного возраста")
else:
print("Борис старше")
! elif = else if
45

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

cost = 1500
if cost < 1000:
print ( "Скидок нет." )
elif cost < 2000:
первое сработавшее
условие
print ( "Скидка 2%." )
elif cost < 5000:
print ( "Скидка 5%." )
else:
print ( "Скидка 10%." )
? Что выведет?
Скидка 2%.
46

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

«3»: Ввести два целых числа, найти наибольшее и
наименьшее из них.
Пример:
Введите два целых числа:
1 5
Наибольшее число 5
Наименьшее число 1
«4»: Ввести четыре целых числа, найти наибольшее из них.
Пример:
Введите четыре целых числа:
1 5 4 3
Наибольшее число 5
47

48. Задачи

'5': Ввести пять чисел и найти наибольшее из них.
Пример:
Введите пять чисел:
4
15
9
56
Наибольшее число 56
4
48

49. Задачи

«6»: Ввести последовательно возраст Антона, Бориса и
Виктора. Определить, кто из них старше.
Пример:
Возраст Антона: 15
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Борис старше всех.
Пример:
Возраст Антона: 17
Возраст Бориса: 17
Возраст Виктора: 16
Ответ: Антон и Борис старше Виктора.
49

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

Задача: набор сотрудников в возрасте 25-40 лет
(включительно). сложное условие
if v >= 25 and v <= 40 :
print("подходит")
else:
print("не подходит")
and «И»: одновременное выполнение
всех условий!
50

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

Задача: набор сотрудников в возрасте 25-40 лет
(включительно). сложное условие
if v < 25 or v > 40 :
print("не подходит")
else:
print("подходит")
or «ИЛИ»: выполнение хотя бы одного
из двух условий!
51

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

if not(a < b):
print("Cтарт!")
? Как без «НЕ»?
not «НЕ»: если выполняется обратное условие
if a >= b:
print("Cтарт!")
Приоритет :
1) отношения (<, >, <=, >=, ==, !=)
2)not («НЕ»)
3)and («И»)
4)or («ИЛИ»)
52

53. Задачи

«3»: Напишите программу, которая получает три числа - рост
трёх спортсменов, и выводит сообщение «По росту.»,
если они стоят по возрастанию роста, или сообщение «Не
по росту!», если они стоят не по росту.
Пример:
Введите рост трёх спортсменов:
165 170 172
По росту.
Пример:
Введите рост трёх спортсменов:
175 170 172
Не по росту!
53

54. Задачи

«4»: Напишите программу, которая получает номер месяца и
выводит соответствующее ему время года или сообщение
об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.
54

55. Задачи

«5»: Напишите программу, которая получает возраст человека
(целое число, не превышающее 99) и выводит этот
возраст со словом «год», «года» или «лет». Например,
«21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.
55

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


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

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

Начальное значение:
s = "Привет!"
Вывод на экран:
print ( s )
! Строка – это
последовательность
символов!
Сложение:
s1 = "Привет"
"Привет, Вася!"
s2 = "Вася"
s = s1 + ", " + s2 + "!"
Умножение:
s = "АУ"
s5 = s*5
s5 = s + s + s + s + s
АУАУАУАУАУ
? Что получим?
57

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

Вывод символа на экран:
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 )
58

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

Ввод с клавиатуры:
s = input ( "Введите имя: " )
Изменение строки
строки:запрещено!
s[4] = "a"
! Строка – это неизменяемый объект!
... но можно составить новую строку:
s1 = s + "a"
составить «кот»
s = "информатика"
print(s[-2]+s[3]+s[-4])
59

60. Срезы

s = "0123456789"
s1 = s[3:8]
разрезы
0
# "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
60

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

s = "0123456789"
s1 = s[:8]
# "01234567"
от начала строки
s = "0123456789"
s1 = s[3:]
# "3456789"
до конца строки
s1 = s[::-1]
# "9876543210"
реверс строки
61

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

Срезы с отрицательными индексами:
s = "0123456789"
s1 = s[:-2]
# "01234567"
len(s)-2
s = "0123456789"
s1 = s[-6:-2]
len(s)-6
# "4567"
len(s)-2
62

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

Удаление:
s = "0123456789"
s1 = s[:3] + s[9:]
"012"
"9"
# "0129"
Вставка:
s = "0123456789"
s1 = s[:3] + "ABC" + s[3:]
"012ABC3456789"
63

64. Функции строк

S.find(str, [start],[end])
Поиск подстроки в строке.
Возвращает номер первого
вхождения или -1
S.rfind(str, [start],[end])
Поиск подстроки в строке.
Возвращает номер последнего
вхождения или -1
S.index(str, [start],[end])
Поиск подстроки в строке.
Возвращает номер первого
вхождения или вызывает
ValueError
S.rindex(str, [start],[end])
Поиск подстроки в строке.
Возвращает номер последнего
вхождения или вызывает
ValueError
64

65. Функции строк

S.replace(шаблон, замена)
Замена шаблона
S.isdigit()
Состоит ли строка из цифр
S.isalpha()
Состоит ли строка из букв
S.islower()
Состоит ли строка из символов
в нижнем регистре
S.isupper()
Состоит ли строка из символов
в верхнем регистре
S.istitle()
Начинаются ли слова в строке
с заглавной буквы
S.upper()
Преобразование строки к
верхнему регистру
65

66. Функции строк

S.lower()
Преобразование строки к
нижнему регистру
S.startswith(str)
Начинается ли строка S с
шаблона str
S.endswith(str)
Заканчивается ли строка S
шаблоном str
ord(символ)
Символ в его код ASCII
chr(число)
Код ASCII в символ
S.capitalize()
Переводит первый символ
строки в верхний регистр, а
все остальные в нижний
S.lstrip([chars])
Удаление пробельных
символов в начале строки
66

67. Функции строк

S.count(str, [start],[end])
Возвращает количество
непересекающихся вхождений
подстроки в диапазоне
[начало, конец] (0 и длина
строки по умолчанию)
S.strip([chars])
Удаление пробельных
символов в начале и в конце
строки
S.title()
Первую букву каждого слова
переводит в верхний регистр,
а все остальные в нижний
S.swapcase()
Переводит символы нижнего
регистра в верхний, а верхнего
– в нижний
67

68. Задачи

«3»: Ввести с клавиатуры пароль (символьную строку), если его
длина меньше, чем 6 символов, вывести сообщение «Слишком
короткий пароль!», иначе вывести сообщение «ОК».
Пример:
Введите пароль:
12345
Слишком короткий пароль!
Пример:
Введите пароль:
123456789
ОК.
68

69. Задачи

«4»: Ввести с клавиатуры пароль (символьную строку). Если его
длина меньше, чем 6 символов, вывести сообщение «Слишком
короткий пароль!». Если пароль начинается с букв «qwerty»
вывести сообщение «Ненадёжный пароль!». Если ошибок не
было, вывести сообщение «ОК».
Пример:
Введите пароль:
qwerty12345
Ненадёжный пароль!
Пример:
Введите пароль:
asdUTY7sakh
ОК.
69

70. Задачи

«5»: Ввести с клавиатуры имя файла. Если расширение имени файла
– htm, html или php, выдать сообщение «Это веб-страница!»,
иначе выдать сообщение «Что-то другое.»
Пример:
Введите имя файла:
C:\DOC\Сайт\index.html
Это веб-страница!
Пример:
Введите имя файла:
C:\Документы\Приказ.doc
Что-то другое.
70

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


Циклические алгоритмы
71

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

Цикл – это многократное выполнение одинаковых
действий.
Два вида циклов:
• цикл с известным числом шагов (сделать 10 раз)
• цикл с неизвестным числом шагов (делать, пока не
надоест)
Задача. Вывести на экран 10 раз слово «Привет».
? Можно ли решить известными методами?
72

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

print("Привет")
print("Привет")
...
print("Привет")
? Что плохо?
73

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

начало
сделали 10 раз?
да
конец
нет
print("Привет!")
тело цикла
74

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

счётчик = 0
k=0
пока счётчик < 10:
while k < 10:
print("Привет")
print ( "Привет" )
увеличить счётчик на 1
k += 1
? Как по-другому?
счётчик = 10
k = 10
пока счётчик > 0:
while k > 0:
print("Привет")
print ( "Привет" )
уменьшить счётчик на 1
k -= 1
75

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

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
зацикливание
76

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

Задача. Определить количество цифр в десятичной
записи целого положительного числа, записанного в
переменную n.
n
счётчик
счётчик = 0
пока n > 0:
1234
0
отсечь последнюю цифру n
123
1
увеличить счётчик на 1
12
2
? Как отсечь последнюю цифру?
n = n // 10
1
0
3
4
? Как увеличить счётчик на 1?
счётчик = счётчик + 1
счётчик += 1
77

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

начальное значение
счётчика
заголовок
цикла
условие
продолжения
count = 0
while n > 0 :
n = n // 10
count += 1
тело цикла
! Цикл с предусловием – проверка на входе в цикл!
78

79. Задачи

«3»: Ввести с клавиатуры количество повторений и вывести столько
же раз какое-нибудь сообщение.
Пример:
Сколько раз:
5
Привет!
Привет!
Привет!
Привет!
Привет!
79

80. Задачи

«4»: Ввести с клавиатуры натуральное число и определить, сколько
раз в его записи встречается цифра 1.
Пример:
Введите число:
51211
3
«5»: Ввести с клавиатуры натуральное число и найти сумму
значений его цифр.
Пример:
Введите число:
1234
Cумма цифр 10
80

81. Задачи

«6»: Ввести натуральное число и определить, верно ли, что в его
записи есть две одинаковые цифры, стоящие рядом.
Пример:
Введите натуральное число:
12342
Нет.
Пример:
Введите натуральное число:
12245
Да.
81

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

Алгоритм Евклида. Чтобы найти НОД двух натуральных чисел,
нужно вычитать из большего числа меньшее до тех пор,
пока они не станут равны. Это число и есть НОД исходных
чисел.
НОД(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
82

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

Модифицированный алгоритм Евклида. Заменять большее
число на остаток от деления большего на меньшее до тех
пор, пока меньшее не станет равно нулю. Другое
(ненулевое) число и есть НОД чисел.
НОД(1998,2) = НОД(0,2) = 2
пока a!=0
???: and b!=0:
если a > b:
a = a % b
иначе:
b = b % a
если a != 0:
вывести a
иначе:
вывести b
? Какое условие?
? Как вывести
результат?
83

84. Задачи

«3»: Ввести с клавиатуры два натуральных числа и найти их НОД с
помощью алгоритма Евклида.
Пример:
Введите два числа:
21 14
НОД(21,14)=7
«4»: Ввести с клавиатуры два натуральных числа и найти их
НОД с помощью модифицированного алгоритма
Евклида. Заполните таблицу:
a
64168
358853
6365133
17905514
549868978
b
82678
691042
11494962
23108855
298294835
НОД(a,b)
84

85. Задачи

«5»: Ввести с клавиатуры два натуральных числа и сравнить
количество шагов цикла для вычисления их НОД с помощью
обычного и модифицированного алгоритмов Евклида.
Пример:
Введите два числа:
1998 2
НОД(1998,2)=2
Обычный алгоритм: 998
Модифицированный: 1
85

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

Задача. Ввести строку и определить, сколько в ней цифр.
счётчик = 0
для каждого символа строки:
если символ – цифра:
счётчик += 1
для всех символов в
s = input()
строке
k = 0
for c in s:
if c.isdigit():
k += 1
если c – это цифра
86

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

if c.isdigit():
print("Цифра")
if c.isalpha():
print("Буква")
if c.islower():
print("Строчная буква")
if c.isupper():
print("Заглавная буква")
if c in ["а","б"]:
print("Это а или б")
87

88. Задачи

«3»: Ввести с клавиатуры число в двоичной системе счисления.
Определить, сколько в его записи единиц и сколько нулей.
Пример:
Введите число:
1010100
Нулей: 4
Единиц: 3
«4»: Ввести с клавиатуры символьную строку. Если это правильная
запись двоичного числа, вывести сообщение «Да», иначе
вывести сообщение «Нет».
Пример:
Введите число:
Введите число:
1010100
abcd10
Да.
Нет.
88

89. Задачи

«5»: Ввести с клавиатуры символьную строку и составить новую
строку, удалив из исходной все пробелы.
Пример:
Введите строку:
Вася пошел гулять.
Васяпошелгулять.
89

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

Задача. Вывести 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
90

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

Задача. Вывести все степени двойки от 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
91

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

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 )
1
9
25
49
81
100
81
64
49
36
25
16
9
4
1
92

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

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,1,-1): a += 1
a= 3
93

94. Задачи

«3»: Ипполит задумал трёхзначное число, которое при
делении на 15 даёт в остатке 11, а при делении на
11 даёт в остатке 9. Найдите все такие числа.
«4»: Вводится натуральное число N. Программа должна
найти факториал (обозначается как N!) –
произведение всех натуральных чисел от 1 до N.
Например, 5! = 1 · 2 · 3 · 4 · 5 = 120.
Пример:
Введите число:
5
5!=120.
94

95. Задачи

«5»: Натуральное число называется числом
Армстронга, если сумма цифр числа, возведенных
в N-ную степень (где N – количество цифр в числе)
равна самому числу. Например, 153 = 13 + 53 + 33.
Найдите все трёхзначные Армстронга.
95

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


Массивы (списки)
96

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

? Как ввести 10000 переменных?
Массив – это группа переменных, расположенных в памяти
рядом (в соседних ячейках) и имеющих общее имя. Каждая
ячейка в массиве имеет уникальный номер (индекс).
Надо:
• выделять память
• записывать данные в нужную ячейку
• читать данные из ячейки
97

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

! Массив = таблица!
A
массив
0
1
5
10
НОМЕР
элемента массива
(ИНДЕКС)
22
15
15
3
4
20
25
ЗНАЧЕНИЕ элемента
A[0]
A[1]
A[2]
A[3]
A[4]
массива
НОМЕР (ИНДЕКС)
элемента массива: 2
A[2]
ЗНАЧЕНИЕ
элемента массива: 15
98

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

A = [1, 3, 4, 23, 5]
A = [1, 3] + [4, 23] + [5]
[1, 3, 4, 23, 5]
A = [0]*10
? Что будет?
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Создание массива из N элементов:
N = 10
A = [0]*N
99

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

Целыми числами (начиная с 0!):
N = 10
# размер массива
A = [0]*N # выделить память
for i in range(N):
A[i] = p
i
В краткой форме (списочные выражения):
N = 10
# размер массива
A = [ p
i for i in range(N) ]
? Как заполнить, начиная с 1?
? Как заполнить квадратами чисел?
100

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

из библиотеки (модуля)
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) ]
101

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

Как список:
print ( A ) [1, 2, 3, 4, 5]
В строчку через пробел:
for i in range(N):
print ( A[i], end = " " ) 1 2 3 4 5
пробел после
или так:
вывода очередного
числа
for x in A:
1 2 3 4 5
print ( x, end = " " )
или так:
print ( *A )
print (1, 2, 3, 4, 5)
разбить список на
элементы
102

103. Создание списка

Чтобы создать список, нужно перечислить его элементы через запятую в квадратных скобках:
numbers = [2, 4, 6, 8, 10]
languages = ['Python', 'C#', 'C++', 'Java’]
Список (в Python) может содержать значения разных типов данных:
info = ['Timur', 1992, 61.5]
Пустой список
Создать пустой список можно двумя способами:
1) Использовать пустые квадратные скобки []:
mylist = [];
2) Использовать встроенную функцию, которая называется list:
mylist = list()

104. Индексация

При работе со строками мы использовали индексацию, то есть обращение к конкретному символу строки по его
индексу. Аналогично, можно индексировать и списки.
Для индексации списков в Python используются квадратные скобки [], в которых указывается индекс (номер)
нужного элемента в списке:
Пусть numbers = [2, 4, 6, 8, 10].
Таблица ниже показывает, как работает индексация:
Выражение
Результат
Пояснение
numbers[0]
2
первый элемент списка
numbers[1]
4
второй элемент списка
numbers[2]
6
третий элемент списка
numbers[3]
8
четвертый элемент списка
numbers[4]
10
пятый элемент списка
Так же, как и в строках, для нумерации с конца разрешены отрицательные индексы.

105. Срезы

Рассмотрим список numbers = [2, 4, 6, 8, 10].
С помощью среза мы можем получить несколько элементов списка, создав диапазон индексов, разделенных
двоеточием numbers[x:y].
Следующий программный код:
print(numbers[1:3]) [4, 6]
print(numbers[2:5]) [6, 8, 10]
При построении среза numbers[x:y] первое число – это то место, где начинается срез (включительно), а второе –
это место, где заканчивается срез (невключительно). Разрезая списки, мы создаем новые списки, по сути,
подсписки исходного.
При использовании срезов со списками мы также можем опускать второй параметр в срезе numbers[x:] (но
поставить двоеточие), тогда срез берется до конца списка. Аналогично если опустить первый параметр
numbers[:y], то можно взять срез от начала списка.

106. Использование срезов для изменения элементов в заданном диапазоне

Для изменения целого диапазона элементов списка можно использовать срезы.
Например, если мы хотим перевести на русский язык названия фруктов 'banana', 'cherry', 'kiwi', то это можно
сделать с помощью среза.
Следующий программный код:
fruits = ['apple', 'apricot', 'banana', 'cherry', 'kiwi', 'lemon', 'mango']
fruits[2:5] = ['банан', 'вишня', 'киви']
print(fruits)
['apple', 'apricot', 'банан', 'вишня', 'киви', 'lemon', 'mango']

107. Функция len()

Длиной списка называется количество его элементов. Для того, чтобы посчитать длину списка мы используем
встроенную функцию len() (от слова length – длина).
Следующий программный код:
numbers = [2, 4, 6, 8, 10]
languages = ['Python', 'C#', 'C++', 'Java']
print(len(numbers)) # выводим длину списка numbers
print(len(languages)) # выводим длину списка languages
print(len(['apple', 'banana', 'cherry'])) # выводим длину списка, состоящего из 3 элементов

108. Встроенные функции sum(), min(), max()

Встроенная функция sum() принимает в качестве параметра список чисел и вычисляет сумму его элементов.
Следующий программный код:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print('Сумма всех элементов списка =', sum(numbers))
Сумма всех элементов списка = 55
Встроенные функции min() и max() принимают в качестве параметра список и находят минимальный и максимальный элементы
соответственно.
Следующий программный код:
numbers = [3, 4, 10, 3333, 12, -7, -5, 4]
print('Минимальный элемент =', min(numbers))
print('Максимальный элемент =', max(numbers))
Минимальный элемент = -7
Максимальный элемент = 3333

109. Операция конкатенации + и умножения на число *

Мы можем применять операторы + и * для списков подобно тому, как мы это делали со строками.
Следующий программный код:
print([1, 2, 3, 4] + [5, 6, 7, 8])
print([7, 8] * 3)
print([0] * 10)
[1, 2, 3, 4, 5, 6, 7, 8]
[7, 8, 7, 8, 7, 8]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Мы также можем использовать расширенные операторы += и *= при работе со списками.
Следующий программный код:
a = [1, 2, 3, 4]
b = [7, 8]
a += b # добавляем к списку a список b
b *= 5 # повторяем список b 5 раз
print(a)
print(b)

110. Оператор принадлежности in

Оператор in позволяет проверить, содержит ли список некоторый элемент.
numbers = [2, 4, 6, 8, 10]
if 2 in numbers:
print('Список numbers содержит число 2')
else:
print('Список numbers не содержит число 2’)
Такой код проверяет, содержит ли список numbers число 2 и выводит соответствующий текст:
Список numbers содержит число 2
Мы можем использовать оператор in вместе с логическим оператором not. Например
numbers = [2, 4, 6, 8, 10]
if 0 not in numbers:
print('Список numbers не содержит нулей')

111. Отличие списков от строк

Несмотря на всю схожесть списков и строк, есть одно очень важное отличие: строки — неизменяемые объекты, а списки –
изменяемые.
Следующий программный код:
s = 'abcdefg'
s[1] = 'x' # пытаемся изменить 2 символ (по индексу 1) строки
приводит к ошибке:
object does not support item assignment
Следующий программный код:
numbers = [1, 2, 3, 4, 5, 6, 7]
numbers[1] = 101 # изменяем 2 элемент (по индексу 1) списка
print(numbers)
выводит:
[1, 101, 3, 4, 5, 6, 7]
Запомни: изменять отдельные символы строк нельзя, однако можно изменять отдельные элементы списков. Для этого
используем индексатор и оператор присваивания.

112. Задачи

«1»: На вход программе подается одно число n.
Напишите программу, которая выводит список [1, 2,
3, ..., n].
«2»: Ввести два натуральных числа a и b (a < b) и
заполнить массив из 16 элементов случайными
числами в диапазоне от a до b.
Пример:
Введите границы диапазона:
5 10
10 9 10 6 8 5 9 6 10 9 9 10 6 8 5 7
«3»: Дополните приведенный код из задачи № 2,
используя индексатор, так чтобы он вывел 8-ый (по
порядку) элемент списка.
112

113. Задачи

«4»: Дополните приведенный код (из задачи № 2),
используя индексатор, так чтобы он вывел
последний элемент списка (Вне зависимости от
количества элементов в нем)
«5»: Дополните приведенный код (из задачи № 2),
используя срезы, так чтобы он вывел первые 6
элементов списка
«6»: Дополните приведенный код (из задачи № 2), так
чтобы он вывел сумму минимального и
максимального элементов списка
«7»: Дополните приведенный код (из задачи № 2), так,
чтобы он вывел среднее арифметическое элементов
списка
113

114. Задачи

«8»: Подготовьте код, используя операторы конкатенации (+) и
умножения списка на число (*), так, чтобы он вывел следующий
список:
[1, 2, 3, 1, 2, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 9, 10, 11, 12, 13]
«9»: Дополните приведенный код:
rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']
так, чтобы элемент списка имеющий значение Green
заменился на значение Зеленый, а элемент Violet на
Фиолетовый. Далее необходимо вывести полученный список.
«10»: Дополните приведенный код (из задачи № 9), так,
чтобы он вывел "перевёрнутый" список rainbow.
114

115. Задачи

«11»: Ввести два натуральных числа a и b и заполнить
массив из 10 элементов: первая половина массива
заполняется случайными числами в диапазоне
между a и b (a может быть больше b), а вторая
половина массива содержит их квадраты в том же
порядке.
Пример:
Введите границы диапазона:
10 5
5 8 7 10 6 25 64 49 100 36
115

116. Методы добавления и удаления элементов

Добавления элементов
1) Метод append()
Для добавления нового элемента в конец списка используется метод append().
numbers = [1, 1, 2, 3, 5, 8, 13] # создаем список
numbers.append(21) # добавляем число 21 в конец списка
numbers.append(34) # добавляем число 34 в конец списка
print(numbers)
Обратите внимание, для того чтобы использовать метод append(), нужно, чтобы список был создан
(при этом он может быть пустым).

117. Методы добавления и удаления элементов

2) Метод extend()
Можно также расширить список другим списком путем вызова метода extend().
numbers = [0, 2, 4, 6, 8, 10]
odds = [1, 3, 5, 7]
numbers.extend(odds)
print(numbers)
Отличие между методами append() и extend() проявляется при добавлении строки к списку.
words1 = ['apple', 'banana', 'cherry', 'kiwi', 'lemon' ]
words2 = ['kiwi', 'lemon']
words1.append('mango')
words2.extend('mango')
print(words1)
print(words2)

118. Методы добавления и удаления элементов

Удаление элементов
С помощью оператора del можно удалять элементы списка по определенному индексу.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
del numbers[5] # удаляем элемент имеющий индекс 5
print(numbers)
Оператор del работает и со срезами: мы можем удалить целый диапазон элементов списка.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
del numbers[2:7] # удаляем элементы с 2 по 6 включительно
print(numbers)

119. Задачи

«1»: Дополните приведенный код, чтобы он:
Вывел длину списка;
Вывел последний элемент списка;
Вывел список в обратном порядке (вспоминаем срезы);
Вывел YES, если список содержит числа 5 и 17, и NO в
противном случае;
Вывел список с удаленными первым и последним
элементами.
Примечание. Каждый вывод осуществлять с новой строки.
119

120. Задачи

«2»: На вход программе подается натуральное число n, а
затем
n целых чисел. Напишите программу, которая создает из
указанных чисел список их кубов.
Формат входных данных
На вход программе подаются натуральное число n, а затем
n целых чисел, каждое на отдельной строке.
Формат выходных данных
Программа должна вывести список, состоящий из кубов
указанных чисел..
120

121. Задачи

«3»: На вход программе подается натуральное число n, а затем n
целых чисел. Напишите программу, которая создает из указанных
чисел список, затем удаляет все элементы стоящие по нечетным
индексам, а затем выводит полученный список.
Формат входных данных
На вход программе подаются натуральное число n, а затем n целых
чисел, каждое на отдельной строке.
Формат выходных данных
Программа должна вывести список в соответствии с условием
задачи.
Примечание. Используйте оператор del.
121

122. Задачи

«4»: На вход программе подается натуральное число n, а затем n
строк. Напишите программу, которая создает список из символов
всех строк, а затем выводит его.
Формат входных данных
На вход программе подаются натуральное число n, а затем n строк,
каждая на отдельной строке.
Формат выходных данных
Программа должна вывести список состоящий из символов всех
введенных строк.
Примечание. В результирующем списке могут содержаться
одинаковые символы.
122

123. Методы списков

Метод insert()
Метод insert() позволяет вставлять значение в список в заданной позиции. В него передается два
аргумента:
index: индекс, задающий место вставки значения;
value: значение, которое требуется вставить.
Следующий программный код:
names = ['Gvido', 'Roman' , 'Timur']
print(names)
names.insert(0, 'Anders')
print(names)
names.insert(3, 'Josef')
print(names)

124. Методы списков

Метод index()
Метод index() возвращает индекс первого элемента, значение которого равняется переданному в
метод значению. Таким образом, в метод передается один параметр:
value: значение, индекс которого требуется найти.
Если элемент в списке не найден, то во время выполнения происходит ошибка.
Следующий программный код:
names = ['Gvido', 'Roman' , 'Timur']
position = names.index('Timur')
print(position)

125. Методы списков

Метод remove()
Метод remove() удаляет первый элемент, значение которого равняется переданному в метод
значению. В метод передается один параметр:
value: значение, которое требуется удалить.
Следующий программный код:
food = ['Рис', 'Курица', 'Рыба', 'Брокколи', 'Рис']
print(food)
food.remove('Рис')
print(food)
Важно: метод remove() удаляет только первый элемент с указанным значением. Все последующие
его вхождения остаются в списке. Чтобы удалить все вхождения нужно использовать цикл while в
связке с оператором принадлежности in и методом remove.

126. Методы списков

Метод pop()
Метод pop() удаляет элемент по указанному индексу и возвращает его. В метод pop() передается
один необязательный аргумент:
index: индекс элемента, который требуется удалить.
Следующий программный код:
names = ['Gvido', 'Roman' , 'Timur']
item = names.pop(1)
print(item)
print(names)

127. Методы списков

Метод count()
Метод count() возвращает количество элементов в списке, значения которых равны переданному в
метод значению.
Таким образом, в метод передается один параметр:
value: значение, количество элементов, равных которому, нужно посчитать.
Следующий программный код:
names = ['Timur', 'Gvido', 'Roman', 'Timur', 'Anders', 'Timur']
cnt1 = names.count('Timur')
cnt2 = names.count('Gvido')
cnt3 = names.count('Josef')
print(cnt1)
print(cnt2)
print(cnt3)

128. Методы списков

Метод reverse()
Метод reverse() инвертирует порядок следования значений в списке, то есть меняет его на
противоположный.
Следующий программный код:
names = ['Gvido', 'Roman' , 'Timur’]
names.reverse()
print(names)

129. Методы списков

Метод clear()
Метод clear() удаляет все элементы из списка.
Следующий программный код:
names = ['Gvido', 'Roman' , 'Timur']
names.clear()
print(names)

130. Методы списков

Метод copy()
Метод copy() создает поверхностную копию списка.
Следующий программный код:
names = ['Gvido', 'Roman' , 'Timur']
names_copy = names.copy()
# создаем поверхностную копию списка names
print(names)
print(names_copy)

131. Методы списков

132. Задачи

«1»: Дополните приведённый ниже код, чтобы он:
numbers = [8, 9, 10, 11]
Заменил второй (по порядку) элемент списка на 17;
Добавил числа 4, 5 и 6 в конец списка;
Удалил первый (по порядку) элемент списка;
Удвоил список;
Вставил число 25 по индексу 3;
Вывел список с помощью функции print()
Примечание. Под удвоением списка мы понимаем
добавление к исходному списку всех его элементов,
сохраняя порядок. Например, при удвоении списка ['py',
'gen'] мы получаем список ['py', 'gen', 'py', 'gen'].
132

133. Задачи

«2»: При анализе данных, собранных в рамках научного
эксперимента, бывает полезно удалить самое большое и самое
маленькое значение.
На вход программе подается натуральное число n, а затем n
различных натуральных чисел. Напишите программу, которая
удаляет наименьшее и наибольшее значение из указанных чисел, а
затем выводит оставшиеся числа каждое на отдельной строке, не
меняя их порядок.
Формат входных данных
На вход программе подаются натуральное число n, а затем n
различных натуральных чисел, каждое на отдельной строке.
Формат выходных данных
Программа должна вывести текст в соответствии с условием
задачи.
Данные на
вход:
Данные на
выход:
10
9
17
189
55
78
11
7
160
9
17
189
3
55
78
11
7
888
160
133

134. Задачи

«3»: На вход программе подается натуральное число n, а затем n
целых чисел. Напишите программу, которая сначала выводит все
отрицательные числа, затем нули, а затем все положительные
числа, каждое на отдельной строке. Числа должны быть выведены
в том же порядке, в котором они были введены.
Формат входных данных
На вход программе подаются натуральное число n, а затем n целых
чисел, каждое на отдельной строке.
Формат выходных данных
Программа должна вывести текст в соответствии с условием
задачи.
Данные на
вход:
Данные на
выход:
7
-4
-1
-2
0
0
3
1
3
-4
1
0
-1
0
-2
134

135. Методы списков

Метод split()
Метод split() разбивает строку на слова, используя в качестве разделителя последовательность
пробельных символов, и возвращает список из этих слов.
Рассмотрим следующий программный код:
s = 'Python is the most powerful language'
words = s.split()
print(words)
Таким образом, вызов метода split() разбивает строку на слова и возвращает список, содержащий
все слова.

136. Методы списков

У метода split() есть необязательный параметр, который определяет, какой набор символов будет
использоваться в качестве разделителя между элементами списка. Например, вызов метода
split('.') вернёт список, полученный разделением исходной строки по символу '.’.
Рассмотрим следующий программный код:
ip = '192.168.1.24'
numbers = ip.split('.') # указываем явно разделитель
print(numbers)

137. Методы списков

Метод join()
Метод join() собирает строку из элементов списка, используя в качестве разделителя строку, к
которой применяется метод.
Рассмотрим следующий программный код:
words = ['Python', 'is', 'the', 'most', 'powerful', 'language']
s = ' '.join(words)
print(s)
Обратите внимание: все слова разделены одним пробелом, поскольку метод join() вызывался на
строке, состоящей из одного символа пробела .

138. Задачи

«4»: На вход программе подается строка текста «У
лукоморья дуб зеленый златая цепь на дубе том».
Напишите программу, которая выводит слова введенной
строки в столбик.
Формат входных данных
На вход программе подается строка текста.
Формат выходных данных
Программа должна вывести текст в соответствии с
условием задачи.
138

139. Задачи

«3»: На вход программе подается строка текста, содержащая имя,
отчество и фамилию человека. Напишите программу, которая выводит
инициалы человека.
Формат входных данных
На вход программе подается строка текста, содержащая имя, отчество
и фамилию человека.
Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.
Sample Input:
Владимир Семенович Высоцкий
Sample Output:
В.С.В.
139

140. Задачи

«4»: На вход программе подается строка текста, содержащая целые числа.
Напишите программу, которая по заданным числам строит столбчатую
диаграмму.
Формат входных данных
На вход программе подается строка текста, содержащая целые числа,
разделенных символом пробела.
Формат выходных данных
Программа должна вывести столбчатую диаграмму.
Sample Input:
5 3 1 7 10 2
Sample Output:
+++++
+++
+
+++++++
++++++++++
++
140

141. Задачи

«5»: На вход программе подается строка текста, содержащая 4 целых
неотрицательных числа, разделенных точкой. Напишите программу, которая
определяет, является ли введенная строка текста корректным ip-адресом.
Формат входных данных
На вход программе подается строка текста, содержащая 4 целых числа,
разделенных точкой.
Формат выходных данных
Программа должна вывести «ДА», если введеная строка является корректным
ip-адресом, и «НЕТ» — в противном случае.
Примечание. ip-адрес является корректным, если все 4 числа находятся в
диапазоне от 0 до 255 включительно.
141

142. Методы списков

Метод sort()
Метод sort() сортирует элементы списка по возрастанию или убыванию.
Следующий программный код:
a = [1, 7, -3, 9, 0, -67, 34, 12, 45, 1000, 6, 8, -2, 99]
a.sort()
print('Отсортированный список:', a)
По умолчанию метод sort() сортирует список по возрастанию. Если требуется отсортировать список
по убыванию, необходимо явно указать параметр reverse = True.
Следующий программный код:
a = [1, 7, -3, 9, 0, -67, 34, 12, 45, 1000, 6, 8, -2, 99]
a.sort(reverse=True) # сортируем по убыванию
print('Отсортированный список:', a)

143. Задачи

«6»: На вход программе подается строка текста, содержащая целые числа. Из
данной строки формируется список чисел. Напишите программу, которая сортирует и
выводит данный список сначала по возрастанию, а затем по убыванию.
Формат входных данных
На вход программе подается строка текста, содержащая целые числа, разделенные
символом пробела.
Формат выходных данных
Программа должна вывести две строки текста в соответствии с условием задачи.
Sample Input:
451238
Sample Output:
123458
854321
143

144. Списочные выражения

Списочные выражения
В Python есть механизм для создания списков из неповторяющихся элементов. Такой механизм
называется — списочное выражение (list comprehension).
numbers = []
for i in range(10):
numbers.append(i)
numbers = [i for i in range(10)]
Общий вид списочного выражения следующий:
[выражение for переменная in последовательность]
где переменная — имя некоторой переменной,
последовательность — последовательность значений, которые она принимает (список, строка или
объект, полученный при помощи функции range),
выражение — некоторое выражение, как правило, зависящее от использованной в списочном
выражении переменной, которым будут заполнены элементы списка.

145. Списочные выражения

Примеры использования списочных выражений
1. Создать список, заполненный 10 нулями можно и при помощи списочного выражения:
zeros = [0 for i in range(10)]
2. Создать список, заполненный квадратами целых чисел от 0 до 9 можно так:
squares = [i ** 2 for i in range(10)]
3. Создать список, заполненный кубами целых чисел от 10 до 20 можно так:
cubes = [i ** 3 for i in range(10, 21)]
4. Создать список, заполненный символами строки:
chars = [c for c in 'abcdefg']
print(chars)

146. Списочные выражения

Считывание входных данных
Списочные выражения часто используются для инициализации списков.
Например, если сначала вводится число n – количество строк, а затем сами строки,
то создать список можно так:
n = int(input())
lines = [input() for _ in range(n)]
Можно опустить описание переменной n:
lines = [input() for _ in range(int(input()))]
Если требуется считать список чисел, то необходимо добавить преобразование
типов:
numbers = [int(input()) for _ in range(int(input()))]

147. Списочные выражения

Условия в списочном выражении
В списочных выражениях можно использовать условный оператор. Например, если
требуется создать список четных чисел от 0 до 20, то мы можем написать такой код:
evens = [i for i in range(21) if i % 2 == 0]

148. Списочные выражения

Пусть
word = 'Hello’,
numbers = [1, 14, 5, 9, 12],
words = ['one', 'two', 'three', 'four', 'five', 'six’].
Списочное выражение
Результирующий список
[0 for i in range(10)]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[i ** 2 for i in range(1, 8)]
[1, 4, 9, 16, 25, 36, 49]
[i * 10 for i in numbers]
[10, 140, 50, 90, 120]
[c * 2 for c in word]
['HH', 'ee', 'll', 'll', 'oo']
[m[0] for m in words]
['o', 't', 't', 'f', 'f', 's']
[i for i in numbers if i < 10]
[1, 5, 9]
[m[0] for m in words if len(m) == 3]
['o', 't', 's']

149. Задачи

«6»: Дополните приведенный код, используя списочное выражение так, чтобы
получить новый список, содержащий строки исходного списка, где у каждой строки
удалён первый символ.
keywords = ['False', 'True', 'None', 'and', 'with', 'as', 'assert', 'break', 'class', 'continue', 'def',
'del', 'elif', 'else', 'except', 'finally', 'try', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'while', 'yield']
new_keywords =
print(new_keywords)
149

150. Задачи

«7»: Дополните приведенный код списочным выражением, чтобы получить новый
список, содержащий только слова длиной не менее пяти символов (включительно).
keywords = ['False', 'True', 'None', 'and', 'with', 'as', 'assert', 'break', 'class', 'continue', 'def',
'del', 'elif', 'else', 'except', 'finally', 'try', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'while', 'yield']
new_keywords =
print(new_keywords)
150

151. Задачи

1 4 9 16 25
Задачи
«8»: На вход программе подается натуральное число n. Напишите
программу, использующую списочное выражение, которая создает
список, содержащий квадраты чисел от 1 до n (включительно), а
затем выводит его элементы построчно, то есть каждый на
отдельной строке.
Формат входных данных
На вход программе подается натуральное число.
Данные на
вход:
Данные на
выход:
5
1
4
9
16
25
Формат выходных данных
Программа должна вывести текст в соответствии с условием
задачи.
Примечание. Для вывода элементов списка используйте цикл for.
151

152. Вложенные списки

Оказывается, элементами списков могут быть другие списки и в реальной разработке
такая конструкция оказывается очень полезной. Такие списки называются вложенными
списками.
Создание вложенного списка
Работа с вложенными списками принципиально ничем не отличается от работы со
списками, например, чисел или строк. Чтобы создать вложенный список, мы также
перечисляем элементы через запятую в квадратных скобках:
my_list = [[0], [1, 2], [3, 4, 5]]
Переменная my_list ссылается на список, состоящий из других списков (с
вложенными списками).

153. Вложенные списки

Рассмотрим программный код:
my_list = [[0], [1, 2], [3, 4, 5]]
print(my_list)
print(my_list[0])
print(my_list[1])
print(my_list[2])
print(len(my_list))
[[0], [1, 2], [3, 4, 5]]
[0]
[1, 2]
[3, 4, 5]
3

154. Вложенные списки

Индексация
При работе с одномерными списками мы использовали индексацию, то есть
обращение к конкретному элементу по его индексу. Аналогично можно индексировать
и вложенные списки:
my_list = ['Python', [10, 20, 30], ['Beegeek', 'Stepik']]
print(my_list[0])
print(my_list[1])
print(my_list[2])
Python
[10, 20, 30]
['Beegeek', 'Stepik']

155. Вложенные списки

Рассмотрим программный код:
my_list = ['Python', [10, 20, 30], ['Beegeek', 'Stepik!']]
t
print(my_list[0][2])
# индексирование строки 'Python'
20
print(my_list[1][1])
# индексирование списка [10, 20, 30]
print(my_list[2][-1]) # индексирование списка ['Beegeek', 'Stepik!'] Stepik!
!
print(my_list[2][-1][-1]) # индексирование строки 'Stepik!’
print(my_list[3])
IndexError: index out of range

156. Задачи

«9»: Дополните приведенный код, используя цикл for и встроенную функцию max(),
чтобы он выводил максимальный элемент среди всех элементов вложенных списков
списка list1.
list1 = [[1, 7, 8], [9, 7, 102], [6, 106, 105], [100, 99, 98, 103], [1, 2, 3]]
maximum =
print(maximum)
156

157. Задачи

«10»: Дополните приведенный код так, чтобы список list1 имел вид:
list1 = [[8, 7, 1], [102, 7, 9], [105, 106, 102], [103, 98, 99, 100], [3, 2, 1]]
list1 = [[1, 7, 8], [9, 7, 102], [102, 106, 105], [100, 99, 98, 103], [1, 2, 3]]
print(list1)
157

158. Задачи

«11»: Дополните приведенный код так, чтобы он выводил единственное число:
сумму всех чисел списка list1, разделённую на общее количество всех чисел.
Подсказка
Используйте встроенные функции sum() и len() для нахождения суммы всех
элементов и их количества.
list1 = [[1, 7, 8], [9, 7, 102], [102, 106, 105], [100, 99, 98, 103], [1, 2, 3]]
total = 0
counter = 0
158
English     Русский Rules