Методичка. Методические указания по ПО АС_очники. Методические указания к проведению занятий по дисциплине " Программное обеспечение автоматизированных систем" Москва 2018
Скачать 0.59 Mb.
|
Модуль 2 Основы программирования на PythonТема 4. Встроенные функцииЦель темы: Получение навыков использования встроенных функций языка Python. Запустите интерактивную оболочку IDLE. Откройте окно текстового редактора. В первой строке напишите комментарий с текстом: « Тема 4 <ФИО>». Сохраните содержимое окна редактора в своем рабочем каталоге с именем файла протокола. В ходе выполнения дальнейшей работы все корректно выполненные инструкции и их результаты записывайте в этот текстовый файл. Встроенные функции – это готовые к использованию функции, реализующие различные полезные операции, необходимость в которых часто возникает при решении прикладных задач. Часть из них имеется в виде стандартных функций – то есть они не требуют дополнительных усилий, готовы к употреблению сразу после запуска среды Python и относятся к классу 'builtin_function_or_method'. Другие собраны в совокупности, называемые модулями, и требуют выполнения операции импорта соответствующего модуля, прежде чем воспользоваться входящими в него функциями. Они являются объектами класса 'function'. Модули также являются объектами класса 'module' и тогда входящие в них функции представляют собой методы этих объектов. Фактически, модули представляют собой библиотеки включенных в них функций. В данной теме ставится цель познакомить обучающихся с примерами часто встречающихся функций, как встроенных, так и содержащихся в некоторых модулях. Стандартные функции. Находятся в модуле builtins, который становится доступным без импорта при запуске среды IDLE. 2.1. Функция round – округление числа с заданной точностью. Получите справку по назначению функции (см.тему 1). Попробуйте использовать эту функцию на примерах: round(123.456,1) round(123.456,0) Определите, какого типа получаются результаты вычисления этой функции. Функция range – создание последовательности целых чисел с заданным шагом или, по умолчанию, с шагом 1. Пример. gg=range(76,123,9) Аргументами функции являются границы диапазона значений и шаг. При этом правая граница в создаваемую последовательность включена не будет (так же, как это было в «срезах» индексов объектов-последовательностей). Обратите внимание, что эта инструкция создает, так называемый, «итерируемый объект» класса range. Чтобы увидеть получившуюся последовательность чисел, его надо преобразовать, например, в список, обычным способом: list(gg) Обратите внимание на возможность вызова функции range с одним аргументом, например, range(23) Объект с какими значениями получится в этом случае? Каковы границы диапазона? Какой шаг? Функция zip – создание общего объекта, элементами которого являются кортежи, составленные из элементов двух или более объектов-последовательностей (zip – застежка-«молния»). Длина результирующего объекта равна длине самого короткого объекта из двух аргументов функции. Создайте объект-список с именем qq, содержащий строку с вашей фамилией и строки-фамилии еще 3-х студентов. После этого примените функцию zip: ff=zip(gg,qq) Как и в range здесь получается «итерируемый объект» класса zip, поэтому, чтобы увидеть результат вычисления функции, превратите его, например, в кортеж: tuple(ff) Обратите внимание на то, сколько элементов-кортежей в получившемся объекте. Сравните это число с числами элементов в списках gg и qq. Проверьте, можно ли к объекту ff обращаться с указанием индекса? 2.4. Функция eval – вычисление значения выражения, корректно записанного на языке Python и представленного в виде символьной строки. Например, fff=float(input('коэффициент усиления=')); dan=eval('5*fff-156') В ответ на выводимый запрос введите некоторое значение. После этого отобразите получившееся значение переменной dan. 2.5. Похожая на eval функция exec – чтение и выполнение объекта-аргумента функции. Этот объект должен представлять собой строку символов с совокупностью инструкций на языке Python. Пример: exec(input('введите инструкции=')) В ответ на запрос введите строку: perem=-123.456;gg=round(abs(perem)+98,3) Убедитесь, что появился числовой объект с именем gg и со значением 221.456. Самостоятельно изучите и попробуйте применить функции abs, pow, max, min, sum, divmod, len. Функции из стандартного модуля math – совокупность разнообразных математических функций. Загрузите модуль math с помощью инструкции import math Содержание модуля можно узнать с помощью уже использовавшейся ранее функции dir: dir(math) Обращение к функциям из импортированного модуля осуществляется с указанием имени модуля, по образцу: <имя модуля>.<имя функции>(<аргументы функции>) Изучите функцию расчета факториала factorial: help(math.factorial) Попробуйте использовать эту функцию: math.factorial(5) Аналогичным образом изучите и попробуйте применить некоторые другие функции из этого модуля: sin, acos, degrees, radians, exp, log, log10, sqrt, ceil, floor, pi. Вычислите значение функции sin(2π/7+23). Функции из модуля cmath – совокупность функций для работы с комплексными числами. Начните с импорта модуля import cmath Отобразите атрибуты модуля, показывающие содержащиеся в нем функции: dir(cmath) Изучите функцию для извлечения квадратного корня из комплексного числа cmath.sqrt(1.2-0.5j) и функцию расчета фазы cmath.phase(1-0.5j) Стандартный модуль random – совокупность функций для выполнения операций с псевдослучайными числами и выборками. И вновь сначала изучите список содержащихся в модуле функций: dir(random) Изучите функцию seed, задающую случайное начальное состояние для псевдослучайных чисел: help(random.seed) random.seed() Обратите внимание на то, что эта функция не имеет возвращаемых значений. Далее самостоятельно изучите и попробуйте применить следующие функции: random (равномерно распределенное случайное число), uniform (равномерно распределенное случайное число), gauss (нормально распределенное случайное число), randint (случайное целое число), choice (случайный выбор из совокупности), shuffle (случайная перестановка элементов списка), sample (случайный выбор подмножества элементов), betavariate(случайное число с бета-распределением), gammavariate(случайное число с гамма-распределением). Создайте список с 4 случайными значениями, подчиняющимися, соответственно, равномерному, нормальному, бета и гамма – распределениям и с любыми допустимыми значениями параметров этих распределений. Функции из модуля time – работа с календарем и со временем. import time dir(time) Изучите функцию time, возвращающую время в секундах, прошедшее с начала эпохи, за которое обычно принимается 1.01.1970г. c1=time.time() А теперь определите временной интервал в секундах, со времени ввода предыдущей инструкции: c2=time.time()-c1 Таким образом, с помощью этой функции можно измерять временные промежутки в секундах. Теперь изучите функцию gmtime, возвращающую объект класса struct_time, содержащий полную информацию о текущем времени: год (tm_year), месяц (tm_mon), день tm_mday),…. dat=time.gmtime() Обращение к компонентам получившегося объекта, например, для получения номера месяца: dat.tm_mon Аналогичным образом попробуйте отобразить другие компоненты. Обратите внимание на то, что эта функция возвращает среднеевропейское время. Для получения «местного» времени используйте функцию localtime, также создающую объект класса struct_time. Изучите и попробуйте применить эту функцию, а также asctime (преобразование представления времени из кортежа в строку) , ctime (преобразование времени в секундах, прошедшего с начала эпохи, в строку), sleep (прерывание работы программы на заданное время), mktime (преобразование времени из типа кортежа или struct_time в число секунд с начала эпохи). Обратное преобразование из секунд в местное время осуществляется той же функцией localtime() time.localtime(c1) Помимо модуля time, для работы с датой и временем могут также использоваться функции из модулей datetime и calender, которые здесь изучаться не будут. Графические функции. В развернутой версии Python должны быть установлены модули пакета matplotlib (см.раздел «Установка дополнительных программных модулей»), в состав которого входит модуль pylab, содержащий ряд полезных вычислительных функций и графических возможностей. Импортируйте модуль инструкцией import pylab Если при этом возникнет сообщение об ошибке, добавьте путь к этому модулю в число установленных путей с помощью инструкций import sys sys.path.append(‘<каталог установки Python>\\lib\\site-packages’) Проверьте включение ссылки на этот каталог с помощью инструкции sys.path После этого повторите инструкцию импорта модуля pylab Создайте два списка, один из которых содержит значения сигнала x, а другой – моменты времени измерения значений сигнала t: x=list(range(-3,55,4)) t=list(range(15)) После этого введите инструкции создания и отображения графика x(t): pylab.plot(t,x) #Создание графика в оперативной памяти pylab.title('Первый график') pylab.xlabel('время') pylab.ylabel('сигнал') pylab.show() #Отображение графика на экране Изучите содержание окна с появившимся графиком. Щелкните мышкой по кнопке с изображением дискеты и сохраните график в текущем каталоге в файле с именем Ris1. Теперь изучите возможность построения диаграммы. Для этого введите инструкции: region=['Центр','Урал','Сибирь','Юг'] #Метки для диаграммы naselen=[65,12,23,17] # Значения для диаграммы pylab.pie(naselen,labels=region) #Создание диаграммы в памяти pylab.show() #Отображение диаграммы Изучите получившееся изображение. Сохраните его в текущем каталоге в файле с именем Ris2. Самостоятельно изучите состав статистического модуля statistics. Попробуйте применить не менее 3-х функций из этого модуля. Сохраните созданный текстовый файл в своем рабочем каталоге. Закончите сеанс работы с IDLE. Общее контрольное задание Реализовать, записать в текстовый файл и проанализировать результаты последовательности инструкций, выполняющих следующие действия: Напишите и исполните единое выражение, реализующее последовательное выполнение следующих операций: вычисление фазы комплексного числа 0.2+0.8j, округление результата до двух знаков после запятой, умножение полученного значения на 20, получение кортежа из двух значений: округленное вниз значение от деления результата на 3 и остатка от этого деления. Создайте объект класса struct_time с временными параметрами для текущего московского времени. Создайте строку с текущим часом и минутами. Создайте список с элементами – названиями дней недели. Сделайте случайную выборку из этого списка с тремя днями недели. Напишите инструкцию случайного выбора числа из последовательности целых чисел от 14 до 33 с шагом 3. Сгенерируйте нормально распределенное число с математическим ожиданием 15 и стандартным отклонением 4 и округлите его до целого значения N. Создайте список с N элементами – случайно выбранными буквами латинского алфавита. Напишите инструкцию для определения временного интервала в минутах, прошедшего с момента предыдущего определения временных параметров. Индивидуальные контрольные задания по теме Создайте список1 со значениями от 45 до 234 с шагом 5. Создайте список2 с элементами: 1,2,3,…(число элементов в списке2 должно быть таким же, как и в списке1). Напишите инструкцию создания с использованием двух ранее созданных списков общего списка с элементами- кортежами по образцу: (45,1), (50, 2),… . Выполните эту инструкцию с помощью функции eval. Определите время начала текущего временного промежутка в секундах. Создайте список с двумя элементами: 0.3+7j и -34.6. Создайте второй список с элементами, равными квадратным корням из значений элементов первого списка. Определите текущее время, прошедшее с зафиксированного начала временного промежутка. Создайте список с 3 элементами – нормально распределенными случайными числами с математическим ожиданием -3.5 и дисперсией 25. Составьте кортеж с элементами, равными синусам от элементов первого списка. Рассчитайте сумму элементов этого кортежа. Напишите инструкцию определения текущего Московского времени. С задержкой на 5 секунд выведите его на экран по шаблону: «В Москве <> часов и <> минут». Создайте список1 с 5 элементами – целыми случайными числами из интервала от 10 до 50. На основе этого списка создайте список2 с 3 случайно отобранными из первого списка элементами. Рассчитайте среднее значение элементов списка2. Создайте переменную с календарными сведениями для текущего момента времени и выведите информацию в виде строки «Текущая дата: <день>-<месяц>-<год>». Создайте объект со значением 5-2j. Извлеките из него квадратный корень с записью результата в новый объект. Эту операцию выполните с использованием функции exec. Создайте кортеж с 4 случайными числами, равномерно распределенными на интервале от 4.5 до 18.8. Реализуйте инструкцию случайного выбора одного из элементов кортежа. Отобразите его по шаблону: «Выбран элемент <значение> с индексом <индекс>». Напишите инструкцию создания переменной со значением – календарными данными момента начала выполнения контрольного задания. Создайте кортеж с последовательностью элементов со значениями от -26 до 45 с шагом 9. Подсчитайте число элементов в созданном кортеже. Отобразите результат в виде строки по шаблону: «Число элементов = <значение>». Напишите инструкцию определения числа секунд, прошедших с начала выполнения контрольного задания. Напишите инструкцию, позволяющую определить и записать в переменную календарные характеристики (год, месяц, день) момента, отстоящего на 7000000 сек. от текущего времени. Выведите эти сведения в виде строки вида: «Это будет ХХ-ХХ-ХХХХ». Создайте множество с 5 случайными целыми элементами, значения которых находятся в диапазоне значений от 1 до 12. Создайте кортеж с 5 значениями – случайными числами с равномерным законом распределения в интервале от 7.6 до 8.3. Создайте список со значениями, равными натуральным логарифмам от значений соответствующих элементов кортежа. Зафиксируйте текущее Московское время и отобразите его в виде строки «В Москве сейчас <значение> часов и <значение> минут». Создайте список с элементами, значения которых находятся в диапазоне от 4 до 53 с шагом 7. Определите число элементов в получившемся списке. Случайно выберите один из элементов списка. Рассчитайте его логарифм и отобразите в виде строки: «Результат = <значение>». Создайте список с 5 элементами – случайными, нормально распределенными числами с математическим ожиданием 7 и дисперсией 36. Случайным образом отберите из списка 3 элемента и запишите их в кортеж. Создайте новый список с элементами, равными округленным до двух знаков после точки значениям из кортежа. Зафиксируйте текущее Московское время и запишите его в переменную. Создайте список с элементами, равномерно размещенными в диапазоне от 0 до 240 с шагом, равным значению часа в текущем времени. Подсчитайте число элементов в списке. Сделайте задержку исполнения программы на 7 сек. Выведите на экран сообщение: «Число элементов =<значение>». Создайте объект со значением -2.3+0.8j. Определите фазу этого комплексного числа. Создайте строку с 33 символами русского алфавита. Подсчитайте число символов в строке. Случайным образом выберите из строки 7 символов и составьте из них кортеж. Превратите кортеж в новую строку. Напишите инструкцию, создающую переменную, значение которой равно времени начала ответа в секундах от начала эпохи. Создайте список с целочисленными значениями, равномерно размещенными в диапазоне от -37 до 62 с шагом 11. Определите число элементов в списке. Случайным образом выберите один элемент из этого списка и рассчитайте для него значение синуса, округленное до трех цифр после точки. Выведите результат в виде строки: «Синус элемента <значение> равен <значение>». Создайте кортеж с целочисленными значениями, равномерно размещенными на интервале от 121 до 163 с шагом 7. Создайте список с 4 элементами – случайными, нормально распределенными числами с математическим ожиданием 23 и стандартным отклонением 7. Создайте общий список с элементами – кортежами, объединяющими пары соответствующих элементов из ранее созданных списка и кортежа. Отобразите на экране с округлением до одного знака после точки второе число из кортежа – третьего элемента созданного списка. Напишите инструкцию, обеспечивающую «засыпание» программы на 5 сек. После этого создайте комплексное число, у которого вещественная и мнимая части были бы случайными целыми числами в диапазоне значений от -10 до 25. Определите фазу этого числа. Отобразите результат на экране в виде: «Для числа ХХ+ХХj фаза = ХХХ» (фазу округлить до двух знаков после точки). Напишите инструкцию запоминания текущего Московского времени в некоторой переменной. Создайте кортеж с целочисленными значениями от 0 до 136 с шагом 17. Подсчитайте число элементов в кортеже. Создайте нормально распределенное число Z с математическим ожиданием 47 и стандартным отклонением 22. Нацело разделите сумму элементов кортежа на округленное до целого значения Z. Отобразите результат в виде символьной строки вида «Результат = ХХ» с использование формата. Определите время в минутах, прошедшее с начала выполнения данного задания. Напишите инструкцию запоминания в переменной текущего регионального времени. Напишите инструкцию превращения этого времени в символьную строку. Отобразите результат на экране. Создайте множество с 5 элементами – случайными целыми числами из диапазона значений от -23 до 57. Подсчитайте корень квадратный из суммы элементов этого множества и отобразите на экране в виде: «результат = ХХХ» с округлением числа до одного знака после точки. Напишите инструкцию запоминания в переменной текущего времени в секундах с начала эпохи. Преобразуйте это время в Московское региональное время. Создайте кортеж с элементами – целыми числами от 27 до 147 через 15. Рассчитайте сумму элементов кортежа и определите значение отношения синуса этой суммы к корню квадратному из неё. Отобразите полученное значение в виде: «Результат = ХХХ» с округлением до 5 знаков после точки. Напишите инструкцию запоминания в переменной текущего времени в секундах с начала эпохи. Преобразуйте это время в символьную строку. Отобразите в виде: «Текущее время = <дата и время>». Создайте список с 4 значениями – случайными, равномерно распределенными числами в диапазоне значений от -5.6 до 24.4. Напишите инструкции создания словаря с ключами: ‘a’,’b’,c’,’d’ и значениями: синусами соответствующих элементов из списка. Отобразите на экране сумму значений словаря с округлением до целого в виде: «Сумма значений = ХХХ». Напишите инструкцию задержки выполнения программы на 7 сек. Создайте список с 4 комплексными числами, у которых вещественные и мнимые части – случайные, равномерно распределенные числа в диапазоне значений от -75.7 до 245.9. Создайте кортеж со значениями – фазами соответствующих элементов списка. Рассчитайте сумму этих фаз и отобразите на экране в виде строки вида: «Сумма фаз = ХХХ» с округлением выводимого значения до двух знаков после точки. Напишите инструкцию запоминания в переменной Московского регионального времени. Добавьте к этому времени 3 часа. Переведите полученное время в секунды от начала эпохи. Отобразите результат в виде: «Число секунд =ХХХХХ». Создайте комплексное число, у которого вещественная и мнимая части – случайные, нормально распределенные числа с математическим ожиданием -55 и стандартным отклонением 12. Извлеките из этого числа квадратный корень. Отобразите результат в виде: «Результат = ХХХ+ХХj». Напишите инструкцию создания словаря с 4 элементами: ключи – буквы А, Б, В, Г, значения – случайные, нормально распределенные числа с математическим ожиданием -20 и стандартным отклонением 40. Зафиксируйте в некоторой переменной текущее Московское календарное время. Создайте список с элементами, значения которых равны косинусам значений элементов словаря. Рассчитать отношение наибольшего значения в списке к наименьшему и отобразить в виде: «Отношение = ХХХХ» с округлением значения до двух цифр после точки. Определите и отобразите время в секундах, прошедшее от начала выполнения задания. Напишите инструкцию создания множества с элементами – целыми числами в диапазоне от -20 до 1114 с шагом 23. Зафиксируйте текущее Московское календарное время и запомните его в переменной. Создайте кортеж со случайным подмножеством из 9 элементов множества. Рассчитайте величину, равную отношению корня квадратного из суммы элементов кортежа к его наибольшему элементу. Отобразите результат в виде: «Величина = ХХХ» с округлением до трёх знаков после точки. Определите и отобразите время в секундах, прошедшее от начала выполнения задания. Напишите инструкцию определения и запоминания в переменной текущего московского календарного времени. Создайте список с 40 элементами – числами от 3 с шагом 6. Создайте кортеж с 12 элементами - случайным подмножеством из элементов списка. Создайте новый кортеж с элементами из первого кортежа, упорядоченными по убыванию величина. Рассчитайте сумму элементов второго кортежа, начиная с 4-го от начала и до 8-го. Отобразите результат на экране в виде «Сумма элементов кортежа = ХХХ». Определите, сколько времени в секундах прошло с начала выполнения задания. |