# Линейные программы --- ## Линейные алгоритмы ---- Самыми простыми являются линейные алгоритмы. В линейных алгоритмах используется единственная алгоритмическая конструкция – следование, то есть команды в таких алгоритмах выполняются последовательно, одна за другой, в том порядке, в котором они записаны. ---- Мы уже знаем, что приоритет выполнения арифметических операций в языке Python аналогичен математическому. Таким образом, при записи математических выражений стоит учитывать, что сначала вычисляются выражения в скобках, после чего выполняются действия возведения в степень. ---- В языке Python возможно использование множественного присваивания. Если записать инструкцию: `b = a = 3`, то сначала будет создана ячейка оперативной памяти с целочисленным значением 3, после чего эта ячейка сначала будет связана с именем a, а потом и с именем b. ---- Также при помощи одной инструкции присваивания можно задать сразу несколько значений нескольким переменным. Для этого в инструкции, слева от знака равенства, через запятую перечисляются имена переменных, а справа от знака равенства – выражения, значения которых необходимо присвоить указанным переменным. Количество и порядок следования имён переменных и присваиваемых значений должны совпадать. пример `a,b = 2,3` --- ## Преобразование типов данных ---- Процесс преобразования значения одного типа данных (целые числа, строки, числа с плавающей точкой и т. д.) в другой называется преобразованием типа. В Python есть два вида преобразования: * Неявное преобразование типов. * Явное приведение типов. ---- При неявном преобразовании типов Python автоматически преобразует один тип данных в другой. Этот процесс не требует участия пользователя. ```python num_int = 123 num_float = 1.23 num_new = num_int + num_float print("Тип данных в num_int:", type(num_int)) print("Тип данных в num_float:", type(num_float)) print("Значение num_new:", num_new) print("Тип данных в num_new:", type(num_new)) ``` ---- Теперь давайте попробуем сложить строку и целое число и посмотрим, как Python с этим справится. ```python= # Складываем строку и целое число num_int = 123 num_str = "456" print("Тип данных в num_int:", type(num_int)) print("Тип данных в num_str:", type(num_str)) print(num_int + num_str) ``` ---- В явном преобразовании программист сам заменяет текущий тип данных объекта на требуемый. Для этого используются встроенные функции, такие как `int()`, `float()`, `str()` и т. д., чтобы выполнить явное преобразование типов. ---- Приведение типов можно выполнить, если присвоить выражению значение функции, соответствующее нужному типу данных. ```python= num_int = 123 num_str = "456" print("Тип данных в num_int:", type(num_int)) print("Тип данных в num_str до явного приведения:", type(num_str)) num_str = int(num_str) print("Тип данных в num_str после явного приведения:", type(num_str)) num_sum = num_int + num_str print("Сумма num_int и num_str:", num_sum) print("Тип данных полученной суммы:", type(num_sum)) ``` ---- * Преобразование типов — это преобразование объекта из одного типа данных в другой. * Неявное преобразование типов автоматически выполняется интерпретатором Python. * Python не допускает потери данных при неявном преобразовании типов. ---- * Явное преобразование типов также называется приведением типов. Типы данных преобразуются пользователем с помощью встроенных функций. * В явном приведении типов может произойти потеря данных, поскольку мы принудительно приводим объект к определенному типу. --- ## Форматирование строк ---- Функция print() обладает ещё двумя параметрами, которые вы можете указать для простого форматирования вывода. sep - параметр, который отвечает за разделитель. По умолчанию пробел. end - параметр, который отвечает за окончание строки. По умолчанию переход на новую строку. ---- Пример sep ```python print(1,2,3,sep='000') print('1','2','3',sep='/') print(1,'2',3,sep='.') print(1,2,3,sep='-') ``` ---- пример end ```python print('это',end=' ') print('цельная',end=' ') print('строка',end=', ') print('',end='будьте уверены') ``` ---- Иногда (а точнее, довольно часто) возникают ситуации, когда нужно сделать строку, подставив в неё некоторые данные, полученные в процессе выполнения программы (пользовательский ввод, данные из файлов и т. д.). Подстановку данных можно сделать с помощью форматирования строк. ---- Использование форматирования строк ```python name = "Эрик" age = 74 print(f"Привет, {name}. Тебе {age} года.") ``` --- ## Составное присваивание ---- В составном операторе присваивания используются арифметические операторы. По своей сути составное присваивание - упрощенная форма записи математического выражения ---- Пример сложения с присваиванием: ``` a = 2 a += 5 print(a) ``` ---- Составной оператор += прибавляет к переменной значение выражения справа от оператора присваивания и записывает получившийся результат в эту переменную. a += 5 эквивалентно a = a + 5. ---- | Составное присваивание | Эквивалентное выражение | | -------- | ---------- | | 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 += b | a = a + b | --- ## Математические функции ---- В Python хорошие ребята уже написали код практически для всех математических функций и добавили их в библиотеки. Так что вам вручную писать функции не придется, вы можете без зазрения совести использовать готовые решения. ---- Функция модуля возвращает неотрицательное значение аргумента. Иначе говоря, она не меняет неотрицательные значения, а отрицательные значения делает положительными. Пример: модуль -3 равен 3, модуль -8.74 равен 8.74 и так далее. ``` abs(-99.99) ``` ---- Синус — тригонометрическая функция, она принимает только одно значение в качестве аргумента — x. Аргумент должен быть выражен в радианах, не путайте со степенью. Для того, чтобы использовать эту функцию, нам нужно импортироватть библиотеку с математическими функциями. ``` import math math.sin(3.14159) ``` ---- Округление - для округления у нас сразу две функции floor и ceil. floor округляет число до ближайшего меньшего целого. ceil округляет число до ближайшего большего целого. ``` import math print(math.floor(3.5)) print(math.ceil(3.5)) ``` ---- Взятие корня производится командой sqrt ``` import math print(math.sqrt(3.5)) ``` --- ## Задачи ---- 1. Дано натуральное число. Выведите его последнюю цифру. ---- 2. Дано натуральное число. Найдите число десятков в его десятичной записи. ---- 3. Дано трехзначное число. Найдите сумму его цифр. ---- 4. Дано положительное действительное число X. Выведите его дробную часть. ---- 5. Дано положительное действительное число X. Выведите его первую цифру после десятичной точки. ---- 6. Даны значения двух моментов времени, принадлежащих одним и тем же суткам: часы, минуты и секунды для каждого из моментов времени. Известно, что второй момент времени наступил не раньше первого. Определите, сколько секунд прошло между двумя моментами времени. Программа на вход получает три целых числа: часы, минуты, секунды, задающие первый момент времени и три целых числа, задающих второй момент времени. Выведите число секунд между этими моментами времени. ---- 7. Длина Московской кольцевой автомобильной дороги – 109 километров. Байкер Вася стартует с нулевого километра МКАД и едет со скоростью `v` километров в час. На какой отметке он остановится через `t` часов? Программа получает на вход значение `v` и `t`. Если `v>0`, то Вася движется в положительном направлении по МКАД, если же значение `v<0`, то в отрицательном. Программа должна вывести целое число от 0 до 108 – номер отметки, на которой остановится Вася. ---- 8. Пирожок в столовой стоит `a` гривен и `b` копеек. Определите, сколько гривен и копеек нужно заплатить за `n` пирожков. Программа получает на вход три числа: `a`, `b`, `n`, и должна вывести два числа: стоимость покупки в гривназ и копейках. ---- 9. За день машина проезжает `n` километров. Сколько дней нужно, чтобы проехать маршрут длиной m километров? Программа получает на вход числа `n` и `m`. ---- 10. В некоторой школе занятия начинаются в 9:00. Продолжительность урока — 45 минут, после 1-го, 3-го, 5-го и т.д. уроков перемена 5 минут, а после 2-го, 4-го, 6-го и т.д. — 15 минут. Дан номер урока (число от 1 до 10). Определите, когда заканчивается указанный урок. Выведите два целых числа: время окончания урока в часах и минутах. ---- 11. Дано два числа `a` и `b`. Выведите гипотенузу треугольника с заданными катетами. ---- 12. Улитка ползет по вертикальному шесту высотой `h` метров, поднимаясь за день на `a` метров, а за ночь спускаясь на `b` метров. На какой день улитка доползет до вершины шеста? Программа получает на вход натуральные числа `h`, `a`, `b`. Программа должна вывести одно натуральное число. Гарантируется, что a>b. ---- 13. С начала суток прошло `H` часов, `M` минут, `S` секунд (`0 ≤ H < 12`, `0 ≤ M < 60`, `0 ≤ S < 60`). По данным числам `H`, `M`, `S` определите угол (в градусах), на который повернулаcь часовая стрелка с начала суток и выведите его в виде действительного числа. ---- 14. С начала суток часовая стрелка повернулась на угол в `α` градусов. Определите на какой угол повернулась минутная стрелка с начала последнего часа. Входные и выходные данные — действительные числа. ---- 15. С начала суток часовая стрелка повернулась на угол в `α` градусов. Определите сколько полных часов, минут и секунд прошло с начала суток, то есть решите задачу, обратную задаче «Часы - 1». Запишите ответ в три переменные и выведите их на экран. ---- 16. Процентная ставка по вкладу составляет `P` процентов годовых, которые прибавляются к сумме вклада. Вклад составляет `X` рублей `Y` копеек. Определите размер вклада через год. Программа получает на вход целые числа `P`, `X`, `Y` и должна вывести два числа: величину вклада через год в рублях и копейках. Дробная часть копеек отбрасывается.
{"metaMigratedAt":"2023-06-16T23:39:58.799Z","metaMigratedFrom":"Content","title":"Линейные программы","breaks":true,"contributors":"[{\"id\":\"0d39d5a3-691d-488c-8f1e-1a0fb0be4f13\",\"add\":10425,\"del\":435}]"}
    259 views