990 likes | 2.36k Views
Основы программирования Часть 1. Введение в Питон. Бондарев Владимир Михайлович, проф. кафедры программной инженерии. Переменные, присваивание, условная команда. Лекция 2.
E N D
Основы программированияЧасть 1. Введение в Питон Бондарев Владимир Михайлович, проф.кафедры программной инженерии
Переменные, присваивание, условная команда Лекция 2
Питон – расширяемый интерпретируемый язык, включивший в себя много ценного из ABC, Modula-3, C, C++, Smalltalk, Lisp, Fortran, Java. ГвидованРоссум разработал Питон в 1991 г. в свободное от работы время. Теперь он BDFL Питона.
Возможности языка Python C# C++ Время Почему Питон? Современный. Интенсивно развивается. Императивный, функциональный и объектный. Работает на всех программных платформах: Windows, UNUX, iOS. Имеет низкий порог вхождения. 2 мес
Учебники по Питону • http://younglinux.info/python.php - Питон для начинающих • Саммерфилд М. Программирование на Python 3. Подробное руководство. - Пер. с англ. - СПб.: Символ-Плюс, 2009. - 608 с, ил. • Марк Лутц - Изучаем Python - 4-е изд – 2011 – 1272 с. – подробно, но длинновато • Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач и мн.др. Язык программирования Python. / 2001 — 454 c. – первоисточник, похож на спецификацию языка • Прохоренок Н. А. Python 3 и PyQt. Разработка приложений. – СПб.: БХВ-Петербург, 2012.-704 с. – подробно и понятно про PyQt.
Как установить • http://www.python.org/ - отсюда скачать дистрибутив (python-3.3.2.msi) для Windows. • Запустить файл python-3.3.2.msi • В меню "Allprograms" появится группа
Числа • Числа – основа всего. Символы, геометрические фигуры, цвета, изображения, музыка – все это числа. • Числа бывают целые, вещественные, комплексные. • Операции над числами: + - * / // % **
Арифметические выражения Если экономить скобки, нужно учитывать: • приоритет операций; • ассоциативность операций. Алфавит, лексемы, выражения, предложения, тексты.
Задачи В интерактивном режиме: • Получить последнюю цифру числа, взяв остаток от деления числа на 10. • Получить предпоследнюю цифру числа (разделить нацело и взять остаток). • Задан год. Определить, к какому веку он относится. vmbo.wordpress.com
Переменные x = 3 y = 2 z = x + y x y z 3 2 5 Задача Даны две переменные, xи y. Обменять местами их значения. x y z Имя переменной – строка из букв и цифр, начинающаяся с буквы.
Сохранение программ • Чтобы сохранить программу, ее нужно поместить в текстовый файлс расширением "py". • Чтобы изменить программу, нужно открыть файл в окне редактора – File / Open. • Чтобы выполнить программу, нужно выбрать пункт меню Run / RunModule.
Условная команда • Задача: Найти минимальное из двух чисел. • Решение: ifx < y: min = x else: min = y if условие: команда1 else: команда2
Другие условные команды • min = x; • if x > y: • min = y • Односторонняя • Многосторонняя • # m – баллы по международной шкале • # n - оценка по национальной шкале • ifm < 60: • n = 'неуд' • elifm < 75: • n = 'удовл' • elif m < 90: • n = 'хорошо' • else: • n = 'отлично'
Логические выражения. Повторение команд Лекция 3
Условия • Любая операциявырабатывает значение. • Операции сравнения вырабатывают логические значения: True или False 2 + 3 =>5 2 < 3 => True 2 > 3 => False Виды сравнений: == != < > <= >=
Составные условия • Составное условие = логическое выражение. • Логические выражения строятся из логических значений (True, False) и логических операций (not, and, or). Примеры: 0 < xandx < 100 y < 0 or y > 100
Логические операции not False = True not True = False False and False = False False and True = False True and False = False True and True = True False or False = False False or True = True True or False = True True or True = True False and X = False X and Y = Y and X X and not X = True True or X = True X or Y = Y or X not X or X = False
Задачи • Поместить в переменную max большее из двух чисел a и b. • Поместить в переменную max большее из трех чисел a, b и c. • В переменной z находится число. Присвойте переменной w -1, если z отрицательно, 1, если z положительно и присвойте 0, если z равно нулю. • Дана переменная х. Если х кратно трем, занести в переменную y число 3. Если х кратно пяти, занести в переменную y число 5. Если х кратно пятнадцати, занести в переменную y число 15. • Даны три числа: a, b, c. Определить, можно ли их выстроить так, чтобы получилась арифметическая прогрессия. vmbo.wordpress.com
Функции Лекция 4
Повторение команд Задача. Напечатать числа от 1 до 9 • Задать первоначальное значение числа X. • Напечатать число X. • Увеличить число X на 1. • Если X меньше 9, перейти к пункту 2. С предусловием: • Задать первоначальное значение числа X. • Пока X меньше 10повторять: • Напечатать число X; • Увеличить X на 1.
Команда while • Задать первоначальное значение числа X. • Пока X меньше 10 повторять: • Напечатать число X; • Увеличить X на 1. x = 1 while x <= 10: print (x) x = x + 1 while условие: команды
Найти сумму 1 + 2 + 3 + … + n • Очистить сумму • Задать первоначальное значение числа • Пока число меньшеили равноnповторять: • Добавить число в сумму • Увеличить число на 1 • Напечатать сумму • sum = 0 n = 100 x = 1 while x <= n: sum = sum + x x = x + 1 • print (sum)
НОД. Алгоритм Эвклида • Задать два числа – большее и меньшее. • Вычесть из большего числа меньшее. • Если разность равна нулю, напечатать большее число и остановиться. • Заменить большее число разностью. • Перейти к пункту 2. • Задать два числа – большее и меньшее. • Пока меньшее число больше 0 повторять: • найти остаток от деления большего числа на меньшее • меньшему присвоить остаток; • большему присвоить меньшее. • Напечатать большее.
НОД. Программа на Питоне • Задать два числа – большее и меньшее. • Пока меньшее число больше 0 повторять: • найти остаток от деления большего числа на меньшее • меньшему присвоить остаток; • большему присвоить меньшее. • Напечатать большее. # m >= r >= 0 while r > 0: t = m % r m = r r = t print(m)
Групповое присваивание в Питоне t = x x = y y = t x, y = y, x while r > 0: t = m % r m = r r = t while r > 0: m, r = r, m%r
Задачи • Напечатать числа от 10 до 1 (функция print() ) • Найти произведение 1 * 2 * 3 * … * n = n! • Найти знакопеременную сумму 1 – 2 + 3 – 4 + 5 – 6 +… - n • Просуммировать степени двойки с 0-й по n-ю. • Найти сумму факториалов от 1! до n! . vmbo.wordpress.com
Функции Лекция 5
Функции Функции – команды исполнителя. • Встроенные: print(), help(), dir(), … • Математические: sin(x), cos(x), tan(x), trunc(x),… from math import * • Пользовательские – те, что определяет (объявляет) программист.
Пользовательские функции Объявление функции: defgcd(m, r): """m>= r>= 0""" while r > 0: m, r = r, m % r returnm Вызов функции: >>> x = gcd(12, 8)
Примеры определений функций def max(a, b): if a > b: return a else: return b def max3(a, b, c): return max(a, max(b, c)) • Переменные создаются при первом присваивании. • Функции создаются при выполнении команды def.
НОД по-древнегречески «Чтобы найти общую меру двух отрезков, нужно вычесть из большего меньший и найти общую меру меньшего и полученной разности.» (Эвклид) def gcd(m, r): """m и r – целые, m > r""" if r == 0: return m return gcd(r, m % r) Рекурсия
Задачи • Объявить функцию gcd3 для нахождения НОД трех чисел, gcd3(a, b, c). • Объявить функцию avg(a, b) для поиска среднего арифметического двух чисел. • Найти НОК двух чисел. НОК – наименьшее общее кратное – наименьшее из чисел, которые делятся без остатка на оба исходных числа. • Объявить функцию century(), которая получает год и возвращает соответствующий году век. Допускается отрицательный аргумент, например, год = -30, век = -1 (первый век д.н.э.) • Объявить функцию isLeap(), которая по заданному году определяет, високосный он или нет. Если високосный, возвращает True, если нет – False.
Списки Лекция 6
Последовательности 3 Списки– изменяемые последовательности Строки – неизменяемые послед. символов Кортежи – неизменяемые списки В Питоне есть общие инструменты для работы с любыми последовательностями – встроенные функции. Но для каждого вида последовательностей есть и специальные инструменты – методы. Метод – специальный вид функции:f(x, y, z) x.f(y, z)
Списки – изменяемые последовательности [2, 3, 5, 7, 11] t = [2, 3, 5, 7, 11] t[0] = 2 t[1] = 3 t[2] = 5 t[3] = 7 t[4] = 11 t[5] – ошибка [2, [2, 3, 5, [4], 1,], [] ] – тоже список
Функции для любых последовательностей • L1 + L2 • n * L L * n • len(L) • min(L) max(L) • del (L[n]) • логические: xin Lи xnotin L Распаковка последовательностей: t = [1, 2, 3]; [x, y, z] = t
Уточнение модели памяти Ранее предполагалось, что переменные – это именованные ячейки памяти, а присвоение – запись значения в ячейку. x = 5 y = 'five' Но в Питоне в именованных ячейках хранятся не сами значения, а адреса других, безымянных, ячеек. А уже в этих ячейках хранятся значения. 5 'five' x y 5 'five' x y
Два вида присваивания Первый вид «переменная = выражение» x = 2 + 3; x = 5; x = 'five'; x = [1,2] + [3, 4] [1,2,3,4] x Второй вид «переменная1 = переменная2» y = x y Имя yстановится синонимом имени x .
Метафора стикеров x = 5 y = x Замечание. Прежняя и новая модели памяти неотличимы, если хранимые значения не изменяемые.
Задачи • Распечатать список в обратном порядке. • Задан список чисел. Объявить функцию sum(), которая просуммирует все его элементы. • Объявить функцию isPalindrome(), которая получает список и возвращает True, если он является палиндромом. В противном случае функция возвращает False. Палиндромом называется такая последовательность, которая одинаково читается в обоих направлениях, например, "НажалКабанНаБаклажан". • Объявить функцию invert(), которая получает список и возвращает новый список, в котором элементы исходного списка следуют в обратном порядке. • Объявить функцию zip(), которая получает два списка равной длины и возвращает список пар. Каждая пара является двухэлементным списком, первый элемент пары берется из первого списка, второй – из второго. zip([1,2,3], ['a', 'b', 'c']) => [[1,'a'], [2,'b'], [3,'c']]. • Убрать из числового списка все отрицательные числа.