Similar presentations:
Учебное пособие Python
1.
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ВОЗДУШНОГО ТРАНСПОРТАФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ
АВИАЦИИ ИМЕНИ ГЛАВНОГО МАРШАЛА АВИАЦИИ А.А.НОВИКОВА»
Основы программирования на языке Python
Учебное пособие
Чаcть I
Авторы:
М.А. Кондрякова, ст. преп.
Ребницкая И.В., ст. преп.
Земсков Ю.В., доцент
Санкт-Петербург
2024
2.
«Основы программирования на языке Python»: Учебное пособие /СПбГУГА. С.-Петербург, 2024. С. 102.
Издается в соответствии с программой дисциплины «Информатика» (36
часов).
Содержит теоретические сведения, необходимые для усвоения материала
и приобретения практических навыков программирования на языке Python.
Предназначено для студентов всех факультетов и форм обучения.
Ил. 13, табл. 7.
Составители:
М.А. Кондрякова, ст. преп.
И.В Ребницкая, ст. преп.
Ю.В. Земсков, доцент
Рецензенты:
2
3.
ОглавлениеВведение ............................................................................................................. 5
Раздел 1. Ввод и вывод данных в интерактивном режиме Python ............... 6
1. Интеллектуальный калькулятор. .............................................................. 6
1.3. Текст ....................................................................................................... 10
Строковые функции print и input ................................................................ 12
Функция print ........................................................................................... 12
Функция input .......................................................................................... 14
Задания к разделу 1: ..................................................................................... 16
Раздел 2. Типы данных. Функции. ................................................................ 21
Строковый тип данных ................................................................................ 21
Целочисленный тип данных ....................................................................... 21
Числа с плавающей точкой ......................................................................... 21
Преобразование типов данных. .................................................................. 22
Программы в отдельном файле ............................................................. 22
Функции, методы и модули ........................................................................ 23
Классификация строковых функций Python ........................................ 25
Модули в Python ......................................................................................... 31
Модуль math ............................................................................................ 31
Модуль random ........................................................................................ 36
Задание к разделу 2: ..................................................................................... 37
Раздел 3. Логические переменные и сравнения на зыке Python. Условный
оператор IF ................................................................................................................. 39
Условный оператор IF .................................................................................... 41
3
4.
Задания к разделу 3: ..................................................................................... 46Задания повышенной сложности: .............................................................. 52
Раздел 4. Разветвляющиеся алгоритмы. Графические области. ................ 60
Задание к разделу 4: ..................................................................................... 63
Раздел 5. Циклы ............................................................................................... 64
Задания к разделу 5: ..................................................................................... 74
Задачи повышенной сложности: ................................................................ 77
Раздел 6. Списки. Функции и методы списков. ........................................... 86
Операции над списками.......................................................................... 87
Псевдонимы и копирование списков. ................................................... 93
Задания к разделу 6: ..................................................................................... 94
Раздел 7. Модуль Turtle .................................................................................. 96
Задания к разделу 7: ..................................................................................... 99
4
5.
ВведениеЯзык программирования - набор определенных правил, по которым
компьютер может понимать команды (инструкции) и выполнять их. Текст
программы на любом языке программирования, называется программным
кодом.
Языки программирования бывают двух основных типов: компилируемые
и интерпретируемые. Компилируемые языки программирования, такие как С++,
Pascal, с помощью специальной программы компилятора перед запуском кода
проверяет весь код на ошибки, затем создает новый выполняемый файл с
машинным
кодом
и
только
потом
запускает
его.
Программа
на
интерпретируемом языке, например, Python, Java выполняется построчно, с
помощью специального интерпретатора.
IDLE
Писать код используя стандартный редактор не очень удобно, а удобнее
делать это в специальных программах, которые называют средой разработки или
IDLE (англ. IDLE -integrated development and learning environment).
Среда разработки фактически состоит из двух частей: редактора кода и
интерпретатора команд, который также называют интерактивной оболочкой, или
IDLE Shell. Современные среды разработки, могут даже дописывать за вас код и
сами искать ошибки.
Писать программы на языке программирования Python можно в любом
текстовом редакторе, однако, чтобы выполнять их потребуется интерпретатор.
IDLE — это кроссплатформенное приложение, которое работает на
Windows, macOS и Linux.
5
6.
Раздел 1. Ввод и вывод данных в интерактивном режимеPython
1. Интеллектуальный калькулятор.
Запустите интерпретатор (IDLE) и дождитесь основного приглашения>>>
(первичная подсказка, обычно состоит из трех знаков больше (>>>); для строк
продолжения - вторичная подсказка, по умолчанию состоит из трех точек (...)).
Интерпретатор печатает приветственное сообщение с указанием номера своей
версии и уведомления об авторских правах перед печатью первого приглашения.
Интерпретатор работает как простой калькулятор: вы можете ввести в него
выражение, и он запишет значение. После завершения набора выражения надо
нажать на клавишу Enter для завершения ввода и вывода результата на экран.
Комментарии в Python начинаются с символа хэша # и продолжаются до
конца физической строки. Комментарий может появляться в начале строки или
после пробела, или кода, но не внутри строкового литерала. Символ хэша внутри
строкового литерала - это просто символ хэша.
Литералы - это обозначения для постоянных значений некоторых
встроенных типов.
В математических выражениях в качестве операндов можно использовать
целые числа (1, 4, -5) или вещественные (в программировании их еще называют
числами с плавающей точкой (4.111, -9.3). Математические операторы,
используемые в Python перечислены на рис.1.
Рис. 1. Математические операторы в Pyton
6
7.
Например, вычислить значение выражения. В интерактивном режимезапись кода будет такой:
>>> 3.0 + 6
9.0
>>> 4 + 9
13
>>>8 / 5
#
деление
всегда
возвращает
число
с
плавающей запятой
1.6
>>> (50 - 5*6) / 4
# указан приоритет выполняемых
действий с помощью круглых скобок.
5.0
>>> 1 - 5
-4
>>> _ + 6
#
Нижним
подчеркиванием
в
примере
символ
нижнего
обозначается последний полученный результат.
2
>>> 5 ** 2
# 5 в квадрате
25
>>> 2 ** 7
# 2 в степени 7
128
Для
разделения
цифр
удобно
использовать
подчеркивания:
>>>1_000_000_000+1_00.8
1000000100.8
Несколько различных арифметических операций могут использоваться в
одном выражении, поэтому важно понимать приоритет выполнения операций:
1. Возведение в степень.
2. Умножение, деление, целочисленное деление, остаток от деления.
3. Сложение и вычитание.
7
8.
1.2. ПеременнаяПрограмма, которая всегда считает результат вычисления одного и того же
выражения, довольно скучная и бессмысленная. Полезная программа должна
оперировать с различными данными без внесения изменений в код. Для хранения
информации в программировании используются переменные.
Переменная - это часть памяти компьютера, которой мы даем имя и можем
использовать эту память для хранения данных и последующего использования.
Любая переменная имеет имя и значение.
Имя переменной:
- должно отражать ее назначение;
- может состоять из латинских букв и цифр;
- не может начинаться с цифры и символа подчеркивания;
- нельзя использовать ключевые слова, которые для Python имеют
определенный смысл (они подсвечиваются в IDLE оранжевым цветом) (рис.2):
Рис. 2. Ключевые слова в Python
Тип переменной — это формат области памяти, определяющий множество
возможных значений переменной и множество допустимых операций над ней.
Итак, переменная - это ячейка памяти определенного типа, имеющая имя.
Целые числа (например, 2, 4, 20) имеют тип int; числа с дробной частью
(например, 5.0, 1.6) float.
Примечание: От типа переменной зависит поведение операций над ними.
Например, для строк знак плюс (+) означает конкатенацию, а для целых и
вещественных чисел, плюс складывает их и возвращает результат.
8
9.
Знакравенства
называется
оператором
присваивания.
Оператор
присваивания присваивает значение, которое находится справа от знака равно,
переменной, которая находится слева от знака равно.
Значения переменных можно изменять в процессе работы программы.
В выражении y = x + 3 * 6, y и x являются переменными, которые содержат
значения числового типа. На языке Python вычислим значение выражения:
А)
>>> x = 1
>>> y = x + 3 * 6
>>> y
19
Б)
>>> ширина = 20
>>> высота = 5 * 9
>>> ширина * высота
900
В выражении нельзя использовать переменную, если ранее ей не было
присвоено значение - для Python такие переменные не определены и попытка ее
использования выдаст ошибку.
Содержимое переменной можно увидеть, если в интерактивном режиме
набрать ее имя.
Работа с переменными в Python имеет существенную особенность, которая
отличает его от других языков программирования. В момент выполнения
присваивания переменной значения в памяти компьютера создается объект,
затем задается (создается) имя переменной, которой присваивается адрес этого
объекта. Переменные в Python содержат адреса объектов (переменные
ссылаются на объекты). Будем помнить о такой модели и для упрощения будем
говорить, что переменная содержит значение.
9
10.
1.3. ТекстВ Python текст представлен типом str («строки»). Это могут быть символы
«!», слова «rabbit», «Yay!», имена «Paris», предложения «Got your back» и т.д.).
Они могут быть заключены в одинарные кавычки ('...') или двойные кавычки
("...") с тем же результатом. Если строковый объект будет вводится без кавычек,
то будет расценен как имя переменной и приведет к ошибке.
>>> 'привет' # одинарные кавычки
'привет'
>>>"Hello:)! Ура!"
# двойные кавычки
'Hello:)! Ура!'
>>>'1975'#
цифры,
заключенные
в
кавычки,
также
являются строками
'1975'
Можно создать пустую строку:
>>> '
'
Чтобы привести цитату (написать текст в двойных кавычках), нам нужно
«экранировать» ее, поставив перед ней \. В качестве альтернативы можно
использовать кавычки другого типа:
>>> ' \" Да \" , - сказали они.'
'"Да" ,- сказали они.'
>>> " \"Да\" , - сказали они."
'"Да" ,- сказали они.'
Операции над строками.
Конкатенация (склеивание) строк (оператор «+» для строк) – объединение
нескольких строк в одну (также можно расположить строки последовательно без
каких-либо операторов). Повторить строку можно с помощью оператора «*».
>>> # 3 раза 'Py', затем 'ton'
>>> 3 * 'Py' + 'ton'
'PyPyPyton'
10
11.
Два или более строковых литерала (т.е. те, которые заключены в кавычки)рядом друг с другом автоматически объединяются.
>>> 'Py' 'thon'
'Python'
Объединить переменные (переменную) и литерал:
>>> префикс = "пи"
>>> префикс + "тон"
'питон'
Объединение нескольких строк. Обратная косая черта (\) может быть
добавлена в конце строки, чтобы игнорировать перевод строки:
>>> 'fdfdf\
... fdfdf\
... ffgbb'
'fdfdffdfdfffgbb'
Эта функция особенно полезна, когда вы хотите разбить длинную строку
(это работает только с двумя литералами, а не с переменными или
выражениями):
>>>text=('Заключите несколько строк в круглые скобки'
"чтобы объединить их.")
>>>text
'Заключите
несколько
строк
в
круглые
скобки
чтобы
объединить их.'
Объединение нескольких строк с помощью трех одиночных апострофов
(или трех двойных кавычек):
>>>'''это длинная строка и
эта строка'''
'это длинная строка и\nэта строка' #в этом режиме
отобразился символ переноса строки
11
12.
Символ обратной косой черты (\) используется для придания особогозначения обычным символам таким как n, который означает "перевод строки"
при экранировании (\n). Он также может использоваться для экранирования
символов, которые в противном случае имеют особое значение, таких как
перевод строки, обратная косая черта или символ кавычки. Некоторые
управляющие Escape - последовательности перечислены в таблице 1.
Таблица 1.
Управляющие Escape- последовательности.
Escapeпоследовательность
Значение
\<перевод строки>
Обратная косая черта и перевод строки
игнорируются
\\
Обратная косая черта (\)
\'
Одинарная кавычка (')
\"
Двойные кавычки (")
\a
ASCII Bell (BEL)
\b
Обратное пространство ASCII (BS)
\f
ASCII Formfeed (FF)
\n
Перевод строки в формате ASCII (LF)
\r
Возврат каретки ASCII (CR)
\t
Горизонтальная вкладка ASCII (TAB)
Строковые функции print и input
Функцией в программировании называют обособленную (то есть
имеющую свое начало, свой конец и свои собственные переменные) часть
программы, предназначенную для решения какой-то части задачи.
Функция print
В оболочке Python определение строки и строка вывода могут выглядеть
по-разному. Функция print() записывает значение аргумента (ов), который ей
задан. Это отличается от простого написания выражения, которое вы хотите
12
13.
написать (как мы делали ранее в примерах калькулятора), способом обработкинескольких аргументов, величин с плавающей запятой и строк. Встроенная
функция print() обеспечивает более читаемый вывод, опуская заключающие
кавычки, печатая экранированные и специальные символы, а также между
элементами вставляя пробел. Внутри скобок функции print() указывается текст,
который нужно вывести на экран. Текст всегда указывается в кавычках, причем
кавычки могут быть одинарные или двойные (рис.3).
Рис. 3. Пример использования функции print
Необязательные параметры команды print: sep, end
По умолчанию команда print() может принимать несколько скрытых
аргументов, которые задаются по умолчанию в момент вызова, выводить их
через один пробел, и после выполнения команды создавать новую строку. Это
поведение можно изменить, используя дополнительные параметры внутри
команды print() – это sep (разделитель) и end (окончание) (рис.4).
Рис. 4. Параметры функции Print
Вывод объектов разных типов:
>>> print(3, '5', 'опять текст', 81)
3 5 опять текст 81
13
14.
Вывод текста в несколько строк (\n- перевод строки):>>>print ('это длинная\n строка')
это длинная
строка
В качестве разделителя указан символ «:»:
>>> print(1, 4, 6, 8, sep = ':')
1:4:6:8
Важно помнить, что функция print возвращает объект типа None:
>>> two = print(2)
2
>>> print(two)
None
None – это специальная константа, означающая пустоту. Если более точно,
то None – это объект специального типа данных NoneType.
Если надо, чтобы символы, предваряемые \, интерпретировались как
специальные символы, можно использовать необработанные строки, добавив r
перед первой кавычкой:
>>> print('C:\some\name')
C:\some
ame
>>>Print (r 'C:\some\name')
# обратите внимание на
букву r перед C:\some\name
C:\some\name
Функция input
Для того, чтобы запросить данные от пользователя во время работы
программы, используется функция input().
14
15.
Когда input() вызывается, поток программы останавливается до тех пор,пока пользователь не введет данные через командную строку. После завершения
набора текста для ввода данных нужно нажать Enter.
Функция input () возвращает строковый объект.
Пример 1. В интерактивном режиме напишем программу, которая
получает возраст и рост пользователя и выводит их на экран:
В примере для интерактивного ввода значений возраста и роста вызываем
функцию input() для переменных age и height. Далее водим значение с
клавиатуры и нажимаем Enter, т.е. закончили ввод. Содержимое переменных age
и height вывели на экран с помощью функции print.
Этот
код
можно
записать
так
(следующий
способ
называется
множественным присваиванием):
Множественное
присваивание
удобно
использовать, когда
нужно
обменять значения двух переменных.
Пример 2: Множественное присваивание для обмена значениями двух
переменных:
Примечание: Язык Python- регистрочувствительный (переменная name и
Name – это две разные переменные).
15
16.
Задания к разделу 1:Задание 1: напишите программу, которая выводит на экран текст «Моя
первая программа!»
Тестовые данные
Входные данные
Выходные данные
Моя первая программа!
Задание 2:
Напишите программу, которая выводит последовательность из 10 чисел
Фибоначчи «0 1 1 2 3 5 8 13 21 34» через запятую.
Тестовые данные
Входные данные
Выходные данные
0, 1, 1, 2, 3,5, 8, 13, 21, 34
Задание 3:
Вывести последовательность чисел из задания 2, в столбик.
Задание 4:
Напишите программу, которая выводит текст «Python» лесенкой,
состоящей из 5 ступеней (на каждой новой ступени прибавляем слово).
Тестовые данные
Входные данные
Выходные данные
Python
PythonPython
PythonPythonPython
PythonPythonPythonPython
PythonPythonPythonPythonPython
Задание 5:
Написать программу, которая получает имя пользователя и приветствует его.
Тестовые данные
Входные данные
Иван Иванов
Выходные данные
Здравствуй, Иван Иванов!
16
17.
Задание 6:Написать
программу,
которая
получает
данные
студенческого
пользователя (ФИО, номер, профиль) и выводит их в обратном порядке.
Тестовые данные
Входные данные
Выходные данные
Иванов Иван Иванович
ОЛР
567890
567890
ОЛР
Иванов Иван Иванович
Задание 7:
Измените код программы к заданию 6 таким образом, чтобы данные
студенческого были записаны на одной строке через символ «*»
Тестовые данные
Входные данные
Иванов Иван Иванович
Выходные данные
ОЛР*567890*Иванов Иван Иванович
567890
ОЛР
Задание 8:
Написать программу, которая получает на вход символ- разделитель,
последовательно получает фамилию, имя и отчество пользователя и затем
выводит указанные строки через разделитель.
Тестовые данные
Входные данные
$$
Выходные данные
Степанов$$Михаил$$Петрович
Степанов
Михаил
Петрович
Задание 9:
Напишите программу, которая регистрирует нового пользователя.
С клавиатуры вводятся пять строк:
17
18.
Имя пользователяПароль
День рождения
Месяц рождения
Год рождения
На экран выводится четыре строки:
Введите логин: {Имя пользователя}
Введите пароль: {Пароль}
Введите дату рождения: {День.Месяц.Год}
Регистрация завершена!
Тестовые данные
Входные данные
Выходные данные
Иванов Иван Иванович
Введите логин: {Иванов Иван Иванович}
44444
Введите пароль: {4444}
10
Введите дату рождения: {10.03.2005}
03
Регистрация завершена!
2005
Задание 10:
Напишите программу, которая находит произведение и разность четырех
целых чисел, введённых с клавиатуры.
Выведите на одной строке через пробел два целых числа - произведение и
разность исходных чисел.
Тестовые данные
Входные данные
4
Выходные данные
3000 -26
10
15
5
18
19.
Задание 11:X студентов делят Y котлет поровну, неделящийся остаток остается в
тарелке. Написать программу для расчета количества котлет на каждого
студента.
Тестовые данные
Входные данные
10
54
Выходные данные
5
Задание 12:
Дано четырехзначное число. Выведите перевернутое число используя
арифметические операции.
Тестовые данные
Входные данные
1234
Выходные данные
4321
Задание 13:
Как мы знаем из курса информатики, минимальной единицей измерения
количества информации является бит. Но есть также и другие единицы
измерения, которые служат для записи большого количества информации.
2-ичные кратные единицы
Объем, Б
10-ричные кратные
(«-би») – «старые
единицы –
кратные единицы»
«новые кратные
Объем, Б
единицы»
1 кибибайт (1 KiB, 1 КиБ)
210 = 1024
1 килобайт (1 kB, 1 кБ)
103 = 1000
1 мебибайт (1 MiB, 1 МиБ) 220 = 10242
1 мегабайт (1 MB, 1 МБ) 106 = 10002
1 гибибайт (1 GiB, 1 ГиБ)
230 = 10243
1 гигабайт (1 GB, 1 ГБ)
109 = 10003
1 тебибайт (1 TiB, 1 ТиБ)
240 = 10244
1 терабайт (1 TB, 1 ТБ)
1012 = 10004
1 пебибайт (1 PiB, 1 ПиБ)
250 = 10245
1 петабайт (1 PB, 1 ПБ)
1015 = 10005
Вычислить, сколько мегабит содержится в двух гигабинарных байтах.
19
20.
Задание 14:Создать программу, которая находит первые пять членов геометрической
прогрессии и сумму 5-ти первых пяти членов и выводит их на экран.
Тестовые данные
Входные данные
b1 = −176
Выходные данные
-605
q = −1,5
Задание 15:
Часы показывают время в формате h:mm:ss (от 0:00:00 до 23:59:59).
С начала суток прошло X секунд. Выведите, что покажут часы.
Тестовые данные
Входные данные
400
Выходные данные
0:06:40
Задание 16:
Создать программу, которая получает четыре целых числа a, b, c, d и
выводит в первой строке через пробел два значения арифметических выражений:
(a3+b)2 и (b-c)4
Во второй строке программа должна вывести через пробел три значения
арифметических выражений:
(a2+4ab+b)2 , (c - 3cd2 + 7)2 и 6(3b2−4a2c)2
Тестовые данные
Входные данные
Выходные данные
1
9 1
2
121 17956 0
3
4
20
21.
Раздел 2. Типы данных. Функции.Вспомним, что тип переменной — это формат области памяти,
определяющий множество возможных значений переменной и множество
допустимых операций над ней.
Строковый тип данных
Строковый тип данных, как и числовой, очень часто используется в
программировании. В Python строковый тип данных имеет название str
(сокращение от string — струна, ряд).
Целочисленный тип данных
Целые числа в Python представлены типом данных int (сокращение int
происходит от слова integer). Для определения целого числа типа int
используется последовательность цифр от 0 до 9.
Явно указанное численное значение в коде программы называется
целочисленным литералом. Когда Python встречает целочисленный литерал,
он создает объект типа int, хранящий указанное значение.
n = 17
# целочисленный литерал
m = 7
# целочисленный литерал
Числа с плавающей точкой
Наравне с целыми числами в Python есть возможность работы с дробными
(вещественными) числами. Так, например, числа
2
, √2, π – являются
3
вещественными и целого типа int недостаточно для их представления.
Дробные (вещественные) числа в информатике называют числами с
плавающей точкой.
Для представления чисел с плавающей точкой в Python используется тип
данных float, где разделителем является точка.
e = 2.71828
# литерал с плавающей точкой
pi = 3.1415
# литерал с плавающей точкой
21
22.
Преобразование типов данных.Для преобразования строки в целое число, мы используем команду int():
num = int(input()) # преобразование считанной строки
в целое число
Следующий код преобразует строку 12345 в целое число:
n = int('12345') # преобразование строки в целое число
Для преобразования строки к числу с плавающей точкой
мы используем команду float:
num = float(input()) # преобразование считанной строки
в число с плавающей точкой
n = float('1.2345')
с плавающей точкой
# преобразование строки к числу
Если строка не является числом, то при преобразовании возникнет ошибка.
Любое целое число (тип int) можно использовать там, где ожидается число
с плавающей точкой (тип float), поскольку при необходимости Python
автоматически преобразует целые числа в числа с плавающей точкой.
Число с плавающей точкой нельзя неявно преобразовать в целое число.
Для такого преобразования необходимо использовать явное преобразование с
помощью команды int().
Если мы хотим перевести число в строку, необходимо воспользоваться
командой str().
Программы в отдельном файле
В интерактивном режиме нельзя внести изменения в выражение, которое
уже ранее было выполнено. Приходится повторно набирать выражение и его
запускать. В случае больших программ удобно использовать отдельные файлы с
расширением .py.
22
23.
В меню IDLE выберете File - New File. Появится окно текстовогоредактора, в котором можно набирать команды на языке Python.
Наберем следующий код:
х = 1
y = x + 3 * 6
print(у)
В меню редактора командой Save As сохраним файл в вашу папку, указав
имя test1.py.
Чтобы протестировать программу в меню редактора выберем Run -> Run
Module (или нажмем <F5>). Результат работы программы отобразится в
интерактивном режиме:
19
В интерактивном режиме этот код записывается так:
>>> х = 1
>>> у = x + 3 * 6
>>> у
19
Python в интерактивном режиме самостоятельно подставляет вызов
функции print(), а в файле это надо делать вручную.
Функции, методы и модули
В Python есть два типа функций:
1. встроенные: функции, предоставляемые языком Python, такие как
print(), len (), str () и т.д. Программист не видит их реализацию, она скрыта.
Достаточно знать, как эти функции называются и что они делают;
2. пользовательские: функции, определенные нами в программе Python.
Python допускает значения по умолчанию для параметров функции. Если
параметр не указан, используется значение по умолчанию.
Рассмотрим некоторые встроенные функции:
Print()- вывести на экран;
Input()- считать с клавиатуры;
23
24.
int()- преобразовать к целому числу;float()- преобразовать к числу с плавающей точкой.
abs()- функция, которая для числа x (целого или вещественного)
возвращает модуль числа x.
round(x, n)- функция, которая возвращает округленное вещественное
число x к ближайшему целому с точностью n знаков после запятой. Можно не
указывать параметр n, тогда округление будет до целого значения.
len(s)- функция, которая возвращает длину переданной ей строки s
(возвращает количество символов строки).
min(), max() - для определения соответственно минимального или
максимального значения. Аргументов у этих функций может быть любое
количество, главное, чтобы они все были одного типа.
pow(x, y) возвращает значение x в степени y. Эквивалентно записи x**y.
Пример вызова функции abs() с аргументом -9 имеет вид:
>>> abs(-9)
9
>>> d = 1
>>> n = 3
>>> abs(d - n)
2
>>> abs( - 9) + abs(5.6)
14.6
Результат вызова функции можно присвоить переменной, использовать его
в качестве операндов математических выражений, т.е. составлять более сложные
выражения.
Кроме составления сложных математических выражений в Python можно
передавать результаты вызова функций в качестве аргументов других функций
без использования дополнительных переменных.
Примеры вычисления значения выражений, используя функции:
а)
>>>pow( abs(-5) + abs(-3), round(5.8))
262144
24
25.
б)>>>int( round( pow( round(5.777, 2), abs(-2)), 1))
33
Описание работы функций можно найти в документации Python, вызвать
ее можно с помощью функции help(), на вход которой передается имя функции:
>>> help(abs)
Help on built-in function abs in module builtins:
abs(x,
/)
Return the absolute value of the argument.
Классификация строковых функций Python
1. Основные функции (табл. 2).
2. Расширенные функции (табл. 3).
3. Разное (эти функции не предназначены специально для строк, но их
можно использовать для обработки строк) (табл. 4).
(Источник: https://pythononline.ru/osnovy/strokovye-funktsiipython?ysclid=lpqn2p7qft841780889)
Таблица 2
Основные строковые функции.
25
26.
Окончание табл.226
27.
Таблица 327
28.
Таблица 4Разные функции.
Метод – это обычная функция, расположенная внутри класса, которая
"принадлежит" объекту и имеет имя, obj.methodname где obj - некоторый объект
(это может быть выражение), а methodname - имя метода, который определяется
типом объекта.
28
29.
Разные типы определяют разные методы. Методы разных типов могутиметь одно и то же имя, не вызывая двусмысленности. (Можно определять свои
собственные типы объектов и методы, используя классы). Например, инструкция
random.rendint вызывает метод rendint объекта random.
Рассмотрим примеры вызова строковых методов.
Метод capitalize():
>>> str.capitalize('hello') # возвращает копию строки,
в которой первый символ – в верхнем регистре, остальные в нижнем
'Hello'
По аналогии с вызовом функции из модуля указываем имя класса – str
(тип
данных), затем через точку пишем имя строкового метода
capitalize(), который принимает один строковый аргумент.
Метод center принимает два аргумента – строку и число:
>>>
str.center('hello',20)
#
возвращает
строку,
центрированную по заданной длине. По умолчанию заполняется
пробелами. Аргумент задает длину строки.
' hello '
Форма вызова метода через обращение к его классу через точку называется
полной формой. Чаще всего используют сокращенную форму вызова метода:
>>> 'hello'.capitalize()
'Hello'
Для вызова справки у методов необходимо через точку указывать их класс:
>>> help (str.capitalize)
Help on method_descriptor:
capitalize(...)
S.capitalize() -> str
Return a capitalized version of S, i.e. make the first
character have upper case and the rest lower case.
29
30.
Метод format():>>> '{0} и {1}'.format('привет', 'мир')
'привет и мир'
Вместо {0} и {1} подставятся аргументы метода format().
Поменяем их местами:
>>> '{1} и {0}'.format('привет', 'мир')
'мир и привет'
Метод startswith(). Возвращает (True) истину или (False) ложь:
>>> 'spec'.startswith('a') #проверяем, начинается ли
строка с символа, переданного в качестве аргумента
False
Строковый метод strip(), удобно использовать при работе с текстом:
>>> s = ' \n ssssss \n' #возвращается строка, очищенная
от символа переноса строки (\n) и пробелов.
>>> s.strip()
'ssssss'
Метод swapcase() возвращает строку с противоположными регистрами
символов:
>>> 'Hello'.swapcase()
'hELLO'
>>>
Методы можно вызывать подряд в одну строку:
>>> 'ПРИВЕТ'.swapcase().endswith('т')
True
В первую очередь вызывается метод swapcase() для строки 'ПРИВЕТ',
затем для результирующей строки вызывается метод endswith()
с
аргументом 'т':
30
31.
Специальный строковый метод__add__ () используется для
объединения двух строк.
Объединим две строки:
>>>'TT'.__add__('rr')
'TTrr'
Полная форма вызова этого метода в Python:
>>> str.__add__("TT", 'rr')
'TTrr'
Модули в Python
Python содержит множество модулей, которые можно подключать к
своим программам. Модуль содержит в себе набор дополнительных функций.
Подключив модуль к своей программе можно будет пользоваться этими
функциями. Чтобы к ним быстро обращаться, удобно все эти функции
поместить в отдельный файл и загружать их оттуда.
Общий вид команды импорта выглядит так:
import name_module (где name_module – имя импортируемого модуля)
Модуль math
Библиотека (модуль) math является стандартной в Python и содержит
много полезных математических функций и констант.
Для обращения к функциям, находящимся внутри этого модуля,
необходимо подключить модуль math командой import. Обращаться к
функциям модуля math можно несколькими способами.
Например, обращаемся к функции sqrt модуля math для нахождения
квадратного корня из 9 несколькими способами.
Первый способ.
Указываем имя модуля, точку и имя функции с аргументами., в
интерактивном режиме запись кода такая:
31
32.
>>> import math # импортируем модуль math>>> math.sqrt(9) #
3.0 # результат
В текстовом редакторе для вывода результата не забывайте использовать
команду print:
import math
print(math.sqrt(9) )
Узнать о функциях, которые содержит модуль, можно через справку:
>>> help(math)
Если хотим посмотреть описание конкретной функции модуля, то
вызываем справку отдельно для нее:
>>> help(math.sqrt)
Help on built-in function sqrt in module math:
sqrt(x, /)
Return the square root of x.
В момент импортирования модуля math создается переменная (объект) с
именем math:
>>> type(math) #определяет тип данных
<class 'module'>
Функция type() показала, что тип данных переменной math – модуль.
Переменная math содержит ссылку (адрес) модульного объекта. В этом
объекте содержатся ссылки на функции (функциональные объекты):
32
33.
В момент вызова функции sqrt() Python находит переменную math(модуль
должен
быть
предварительно
импортирован),
просматривает
модульный объект, находит функцию sqrt() внутри этого модуля и затем
выполняет ее.
Второй способ. Присваиваем значения переменным.
В этом случае мы подключаем модуль math и чтобы использовать
функции из этого модуля напишем название модуля, потом точку и затем
необходимую функцию:
import math
num1 = 9 #присваиваем значение переменной num1
num2 = math. sqrt(num1) # вычислить квадратный корень
print(num2)
# Выведет 3.0
Третий способ.
В этом случае, Python не будет создавать переменную math, а загрузит в
память только функцию sqrt(). Теперь вызов функции можно производить, не
обращаясь к имени модуля math:
>>> from math import sqrt
>>> sqrt(9)
3.0
Четвертый способ. В этом способе мы явно указываем какие функции
будем использовать в своей программе, если их несколько, то перечисляем их
через запятую (без указания модуля). Однако, в этом случае, мы используем
только перечисленные функции:
from math import sqrt, pow
x = 9
y = 2
print(sqrt(x)) # результат: 3.0
print (pow(x,y))
# результат: 81
33
34.
Пятый способ. При таком способе подключения, импортируютсяабсолютно все функции модуля math. Для того, чтобы не указывать название
модуля и символ точки при вызове функций используем инструкцию:
from math import *
Например,
from math import *
x = 9
y = 2
print(sqrt(x)) # результат: 3.0
print (pow(x,y))
# результат: 81
Функции модуля 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 - не число).
34
35.
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.
math.pow(X, Y) - возвращает значение x в степени y. В отличие от
операции **, происходит преобразование обоих аргументов в вещественные
числа:
math.sqrt(X) - квадратный корень из X.
math.acos(X) - арккосинус X. В радианах.
math.asin(X) - арксинус X. В радианах.
math.atan(X) - арктангенс X. В радианах.
math.atan2(Y, X) - арктангенс Y/X. В радианах. С учетом четверти, в
которой находится точка (X, Y).
math.cos(X) - косинус X (X указывается в радианах).
math.sin(X) - синус X (X указывается в радианах).
math.tan(X) - тангенс X (X указывается в радианах).
math.hypot(X, Y) - вычисляет гипотенузу треугольника с катетами X и Y
(math.sqrt(x * x + y * y)).
math.degrees(X) - конвертирует радианы в градусы.
math.radians(X) - конвертирует градусы в радианы.
math.cosh(X) - вычисляет гиперболический косинус.
math.sinh(X) - вычисляет гиперболический синус.
math.tanh(X) - вычисляет гиперболический тангенс.
35
36.
math.acosh(X) - вычисляет обратный гиперболический косинус.math.asinh(X) - вычисляет обратный гиперболический синус.
math.atanh(X) - вычисляет обратный гиперболический тангенс.
math.erf(X) - функция ошибок.
math.erfc(X) - дополнительная функция ошибок (1 - math.erf(X)).
math.gamma(X) - гамма-функция X.
math.lgamma(X) - натуральный логарифм гамма-функции X.
math.pi - pi = 3,1415926...
math.e - e = 2,718281...
Модуль random
Командой import random подключаем модуль random.
Этот модуль реализует генератор псевдослучайных чисел. Для целых
чисел существует равномерный выбор из диапазона. Для последовательностей
существует единообразный выбор случайного элемента, функция для генерации
случайной перестановки списка на месте и функция для случайной выборки без
замены.
Функции,
предоставляемые
этим
модулем,
являются
связанными
методами скрытого экземпляра класса Random.
Например,
print(random.randint(1,50))
Метод randint (a, b) задается с двумя аргументами (начальное, конечное
значение диапазона). Возвращает случайное целое число N такое, что a<=N<=b.
В нашем примере будет генерироваться целое случайное число в диапазоне
значений от 1 до 50. Чтобы заметить работу программы необходимо несколько
раз запустить приложение и каждый раз будет выводиться целое случайное
число в заданном диапазоне.
36
37.
Задание к разделу 2:Написать программу для вычисления по указанной формуле. Проверить
полученный ответ с помощью Microsoft Excel.
Задание по вариантам:
37
38.
3839.
Раздел 3. Логические переменные и сравнения на зыкеPython. Условный оператор IF
Логические переменные и сравнения на зыке Python
Обозначения в Python: True, False, None (нет значения)
В Python для объектов допустимы операторы сравнения (табл.5):
Таблица 5
Операторы сравнения
Знак сравнения
Описание
==
равно
!=
не равно
<
меньше
>
больше
<=
меньше или равно
>=
больше или равно
Элементарные логические операции: not, or, and
Например, в интерактивном режиме сравним два числа:
>>> 7>6
True
>>> 5<1
False
>>> 7==7 # не путайте == и =
True
>>> 8 != 8
False
39
40.
Python возвращает True (Истина = = 1), когда сравнение верное и False(Ложь = = 0) – в ином случае. True и False относятся к логическому (булевому)
типу данных bool.
Также Python поддерживает сразу несколько сравнений, например, можно
написать такое условие x = = y = = z.
Логическим высказыванием можно называть любое повествовательное
предложение, в отношении которого можно однозначно сказать, истинно оно
или ложно.
Логические операции в Python:
And (операция «И», операция логическое умножение),
Or (операция «Или», операция логическое сложение),
Not (операция логическое отрицание).
Выражение с оператором and истинно если истинны все входящие в него
выражения, в противном случае выражение ложно.
Выражение с оператором or истинно, если истинно хотя бы одно входящее
в него выражение, в противном случае ложно.
Выражение с оператором not истинно если входящее в него выражение
ложно и наоборот.
Комбинацию логических высказываний можно представить в виде
таблицы где 0 – False, а 1 – True.
Например,
>>> 2>4 and 45>3 # комбинация False and (И) True вернет False
False
40
41.
Для вычисления оператора and Python вычисляет операнды слева направои возвращает первый объект, имеющий ложное значение. Если Python не удается
найти ложный объект-операнд, то он возвращает крайний правый операнд.
>>> 2 or 3 # вернет первый истинный объект-операнд
2
Логические выражения можно комбинировать:
>>> 1 + 3 > 7 # приоритет + выше, чем >
False
>>> (1 + 3) > 7
False
>>> 1 + (3 > 7)
1
В Python можно проверять принадлежность интервалу:
>>> x=0
>>> -5< x <10 # эквивалентно: x > -5 and x<10
True
или
>>> x = 5 < 10 # True
>>> y = 2 > 3 # False
>>> x or y
True
>>> (x or y) + 6
7
Условный оператор IF
Все ранее рассматриваемые программы имели линейную структуру, т.е.
все строки наших программ выполнялись последовательно одна за одной. Чтобы
41
42.
перейти к следующей строке кода интерпретатор обязательно должен выполнитьпредыдущую.
Для выполнения различных действий в зависимости от введенный данных
и изменения последовательности выполнения строк кода, используется
условный оператор. Проверка условий и принятие решений по результатам этой
проверки называется ветвлением. Программа таким способом выбирает, по
какой из возможных ветвей ей двигаться дальше.
В Python проверка условия осуществляется при помощи ключевого слова if.
Оператор if вычисляет условное выражение, результатом этого выражения
является логическое значение. Если полученный результат является истинным
(true), то инструкция выполняется. Если выражение возвращает ложное значение
(false), то инструкция не выполняется.
Синтаксическая конструкция данного оператора имеет две формы:
безальтернативную, содержащую два типа:
линейный:
if <условие>: < блок выражений>
блочный:
if <условие>:
< блок выражений >
Такой оператор if позволяет выполнять инструкции в том случае, если
условие истинно. Если же условие оказывается ложно, то никаких действий не
выполняется.
Например,
линейная запись кода:
if a < 10:
print ('число меньше 10')
Блочная запись кода:
if a < 10:
print ('число меньше 10')
42
43.
альтернативную:
когда необходимо выполнить одни инструкции, если определенное
условие истинно, и другие инструкции, если условие ложно, тогда используется
ветвление if-else. Оно состоит из оператора if, за которым следует блок
инструкций и ключевого слова else, за которым следует другой блок инструкций.
Синтаксис оператора if-else:
If условие:
<блок выражений_1>
else:
<блок выражений_2>
Блок инструкций расположенный после else выполняется, когда условное
выражение в операторе if возвращает значение false.
Условное выражение может включать множество проверок. В этом случае
используем ключевое слово elif (сокращение от elseIf), которое проверяет
условие и в зависимости от их истинности выполняется тот или иной блок
операторов, а конструкцию Else как условие, не удовлетворяющее никаким
другим условиям.
Общий синтаксис у него следующий:
if <условие_1>:
< блок выражений_1>
elif < условие_2>:
<блок выражений _2>
else:
<блок выражений_3>
Например,
a = float(input("Введите a: ")) # строку преобразовали к
вещественному типу
if a == 7.0:
print(a,"Правильно! ")
43
44.
elif 7.36 < a < 7.44:print(a, "Не верно")
else:
print("Введи правильное число?!")
Вложенные инструкции
Внутри блока инструкций могут находиться другие ветвления программы.
Если вложенных условных операторов несколько, то, к какому из них
относится else, компилятор понимает по отступу. Именно отступ сообщает
интерпретатору Python, где начинается и где заканчивается блок кода.
Отступ блока кода (по соглашению PEP 8) -это смещение строки кода
вправо на 4 пробела (или одно нажатие клавиши Tab).
Например,
value = input("Введите pH: ")
if len(value) > 0: # проверяем, что пользователь хоть
что-нибудь ввел
pH = float (value) # переводим в вещественное число
ввод пользователя
if pH == 7.0: # вложенный if
print(pH, 'Вода')
elif 7.36 < pH < 7.44:
print(pH, 'Кровь')
else:
print('Что это?!')
else:
print('Введите значение pH!')
44
45.
Задание 1. Осуществить проверку условий и вывести текст ('text1') еслизначения переменных pogoda и time содержат значения дождь и ночь. Фрагмент
кода программы можно записать так:
If pogoda== 'дождь'
If time='ночь'
print ('text1')
или так:
if pogoda=='дождь' and time=='ночь':
print ('text1')
или так:
if pogoda=='дождь' and time=='ночь' or time=='вечер':
print ('text1')
Задание 2. Напишите программу, которая определяет, состоит ли
трехзначное число, введенное пользователем, из одинаковых цифр. Если
состоит, то программа выводит «состоит», в противном случае программа
выводит «не состоит».
Решение.
Программа, решающая задачу может выглядеть так:
а = int(input())
#трехзначное число
a1 = a // 100
#первая цифра числа
a2 = a // 10 % 10
a3 = a % 10
#средняя цифра числа
#последняя цифра числа
if a1 == a2 == a3:
print('одинаковые цифры')
else:
print('разные цифры')
45
46.
Задания к разделу 3:Задание 1:
Написать программу, которая сравнивает три целых числа a, b, с и выводит
максимальное из них.
Тестовые данные
Входные данные
11
Выходные данные
60
60
-3
Задание 2:
На вход подается целое число. По данному числу проверьте, является ли
число четным.
Тестовые данные
Входные данные
Выходные данные
ДА
356
Задание 3:
На вход подаются два целых числа a и b. Проверьте делится ли a на b
нацело.
Гарантируется что b не равно нулю.
Тестовые данные
Входные данные
1087
Выходные данные
НЕТ
5
Задание 4:
По данному натуральному четырехзначному числу, определите все ли его
цифры различны.
46
47.
Тестовые данныеВходные данные
Выходные данные
НЕТ
6599
Задание 5:
Определите является ли билет счастливым. Счастливым считается билет, в
шестизначном номере которого сумма первых трёх цифр совпадает с суммой
трёх последних.
Тестовые данные
Входные данные
569087
Выходные данные
НЕТ
Задание 6:
На вход подается целое число х. Определите принадлежит ли точка x
одному из выделенных отрезков.
Тестовые данные
Входные данные
-5
Выходные данные
ДА
Задание 7:
Вводятся три действительных числа a, b, c. Найдите все решения
квадратного уравнения
ax2+ bx + c = 0
Выведите два действительных числа каждый на новой строке, если
уравнение имеет два корня (сначала меньший, далее больший), одно
действительное число – при наличии одного корня. При отсутствии корней
ничего выводить не нужно.
47
48.
Тестовые данныеВходные данные
Выходные данные
1
1
-6
5
5
Задание 8:
В трех студенческих группах университета СПБГУ ГА одновременно
проводят контрольную работу. На двух студентов раздается один лист с
заданием. Программа получает на вход три натуральных числа: количество
учащихся в каждой из трех групп. Выведите наименьшее число листов с
заданием, которое нужно раздать.
Тестовые данные
Входные данные
15
Выходные данные
21
17
7
Задание 9:
По введенному в консоль четырехзначному числу, определите образуют ли
цифры данного числа возрастающую последовательность.
Тестовые данные
Входные данные
3789
Выходные данные
ДА
Задание 10:
Программа получает на вход три числа: A, B, C.
Шоколадка имеет вид прямоугольника, разделенного на A×B долек.
Шоколадку можно один раз разломить по прямой на две части. Определите,
можно ли таким образом отломить от шоколадки ровно C долек.
48
49.
Тестовые данныеВходные данные
Выходные данные
ДА
10
20
200
ДА
4
2
6
Задание 11:
Напишите программу, которая запрашивает в первой строке число n, далее
в следующих строках ещё 4 двузначных числа, и находит количество чисел из
данных четырех, у которых сумма цифр больше n.
Тестовые данные
Входные данные
11
Выходные данные
2
56
87
10
93
Задание 12:
Напишите программу, которая запрашивает 6 натуральных чисел, и
подсчитывает, сколько из них трехзначных.
Тестовые данные
Входные данные
765
Выходные данные
2
100
0
89
49
50.
Входные данныеВыходные данные
5
67
Задание 13:
Напишите программу, которая запрашивает пять натуральных чисел и
выводит позицию наибольшего из них.
Если максимальных элементов
несколько - выведите место крайнего слева.
Тестовые данные
Входные данные
46899
Выходные данные
4
Задание 14:
Создать программу, которая находит расстояние между двумя точками с
заданными координатами (x1, y1) и (x2, y2).
Тестовые данные
Входные данные
4
Выходные данные
5
1
1
5
Задание 15:
Задание по вариантам.
Написать программу для вычисления значения логического выражения
при различных вводимых значениях:
Выполнить проверку с помощью Microsoft Excel.
50
51.
Дополнительные задания к разделу:1. Разработать алгоритм решения задачи.
2. Нарисовать схему алгоритма.
3. Реализовать алгоритм на языке Python.
4. Подобрать минимум 2 контрольных примера (наборы исходных данных)
и для этих примеров сравнить результат работы вашей программы с результатом,
полученным с помощью MS Excel.
Пример выполнения задания (вариант 12).
- Введите текст программы.
51
52.
- Исправьте программу, чтобы она вычисляла логическую функциюсогласно вашему варианту. Исходные данные должны вводиться с клавиатуры,
а не присваиваться в тексте программы, как было в примере. Кроме того,
программа должна выводить на экран фамилию и имя студента.
- Проверьте результат с помощью Microsoft Excel
Задания повышенной сложности:
Задание 16:
Заданы уравнения двух пересекающихся прямых на плоскости: y1=kx1+b1
и y2=kx2+b2. Найти (в градусах и минутах) угол между ними. Входные данные:
k1, b1, k2, b2.
Тестовые данные
Входные данные
2
Выходные данные
45
-1
-3
1
52
53.
Задание 17:Длина отрезка задана в дюймах (1 дюйм=2,54 см). Выразить длину в
метрах, сантиметрах и миллиметрах.
Тестовые данные
Входные данные
Выходные данные
0 м 53 см 3,4 мм
21
Задание 18:
Найти координаты вершины параболы, заданной своим уравнением:
y=ax2 + bx + c.
Тестовые данные
Входные данные
a=1
Выходные данные
( 3; -4)
b = -6
c=5
Задание 19:
Владелец автомобиля приобрел новый карбюратор, который экономит а%
топлива, затем новую систему зажигания, которая экономит b% топлива, а затем
поршневые кольца, экономящие с% топлива. Найти суммарную экономию
топлива в процентах. Если a+b+c = 100%, то значит ли это, что автомобиль
сможет обходится совсем без топлива? Найти фактическую экономию для
произвольно заданных сэкономленных процентов.
Тестовые данные
Входные данные
50
Выходные данные
0, 72
30
20
53
54.
Задание 20:Найти угол (в градусах) между векторами
programming