Занятие № 1. Числовые типы данных. Математические вычисления
Цель: научиться применять операторы ввода и вывода; выполнять вычисления с применением числового типа данных; научиться применять модуль math.
Теория
Повторите необходимые теоретические сведения и ответьте на вопросы.
Литералы и типы данных
Программа манипулирует значениями различных типов. Значения можно классифицировать по их типу. Для каждого типа есть набор литералов - буквальных значений, необходимых для представление значения данного типа. В следующей таблице показаны примеры нескольких типов с которыми мы столкнёмся при решении задач.
Тип данных | Примеры литералов |
---|---|
Целые числа | -2, -1, 0, 1, 2, 3, 4, 5 |
Вещественные числа | -1.25, -1.0, -0.5, 0.0, 0.5, 1.0, 1.25 |
Строки | 'a', 'aa', 'aaa', "Привет!", """11 котов""" |
Строковые литералы в Python располагаются внутри одиночных, двойных или тройных кавычек.
С помощью функции print
можно вывести данные на экран. В круглых скобках через запятую можно указать несколько выводимых значений.
Например, чтобы вывести на экран число 2024, нужно записать
x
?
.
С помощью следующих функций можно преобразовать значения одного типа в другой.
Функция | Итоговый тип |
---|---|
int() |
Целое число (int ) |
float() |
Вещественное число (float ) |
str() |
Строка (str ) |
Запустите следующий код, и посмотрите на результат работы этих функций:
print(3.14, int(3.14)) print(3.9999, int(3.9999)) print(3.0, int(3.0)) print(-3.999, int(-3.999)) print("2345", int("2345")) print(17, int(17)) print(int("23"))
К примеру, после выполнения инструкции print(int(53.785))
на экран будет выведено число
x .
Операторы и операнды
Для выполнения действий над значениями понадобятся операторы - символы, обозначающие определённую операцию. Оператор совершает действия над операндами.
В таблице показаны операторы и приоритет их выполнения.
Оператор | Приоритет | Описание | Пример |
---|---|---|---|
( ) |
5 | Скобки | 3 * (4 - 1) = 9 |
функция() |
4 | Вызов функции | abs(-4) = 4 |
** |
3 | Возведение в степень | 2 ** 3 = 8 |
% |
2 | Остаток от деления | 22 % 8 = 6 |
// |
2 | Целочисленное деление | 22 // 8 = 2 |
/ |
2 | Деление | 22 / 8 = 2.75 |
* |
2 | Умножение | 3 * 3 = 9 |
- |
1 | Вычитание | 5 - 2 = 3 |
+ |
1 | Сложение | 2 + 2 = 4 |
Оператор //
работает как для целых, так и для вещественных чисел. В случае с вещественными числами, дробная часть результата будет равна 0. Так, значение выражения 7.0 // 3.0
равно
x
?
, а результатом вычисления выражения 9 // 2
будет число
x
?
.
Переменные
Переменная - это имя, которое ссылается на значение.
Имя переменной должно подчиняться следующим правилам:
- Может состоять из одного слова (без пробелов).
- Может состоять только из букв, цифр и символа подчёркивания
_
. - Не может начинаться с цифры.
Это значит, что имя переменной
x
sum num
будет некорректным, а имя переменной
x
_name
записано правильно.
Чтобы присвоить переменной значение используется инструкция присваивания:
message = "Как дела?" # переменная строка
n = 17 # переменная с целым числом
pi = 3.14159 # переменная с вещественным числом
Оператор присваивания =
связывает имя переменной с её значением. В Python не нужно заранее указывать тип переменной. Значения обладают типом, имена переменных - нет.
Переменная ссылается на объект (Рисунок 1 (a)). Если мы присваиваем переменной другое значение, ссылка на предыдущее значение (объект) исчезает, и создаётся новая ссылка (Рисунок 1 (b)). На один объект могут ссылаться множество переменных (Рисунок 1 (c)).
Инструкции и выражения
Инструкция - это минимальный набор действий, которые может выполнить интерпретатор. Иными словами, после выполнения инструкции есть эффект её выполнения, но нет конкретного значения, которое можно назвать результатом выполнения инструкции. К инструкциям относится присваивание, алгоритмические конструкции if
, while
, for
, импорт модулей import
и др.
Выражение - это комбинация литералов, имён переменных, операторов и вызовов функций. Значение выражения должно быть вычислено. Результатом вычисления выражения является значение (или объект).
Везде в коде программы где может располагаться литерал, может быть и выражение. В следующем коде перед тем как вывести значение на экран, интерпретатор Python должен вычислить значение выражения:
В результате на экране выведется число x ? .
Для математических вычислений может понадобится модуль math
. Чтобы использовать его в скрипте, нужно добавить инструкцию импорта:
Модуль math
содержит следующие функции и константы:
math
В Python | В математике | Описание |
---|---|---|
math.pi |
\(\pi\) | Приблизительное значение числа Пи |
math.sqrt(x) |
\(\sqrt{x}\) | Корень квадратный из x |
math.sin(x) |
\(\sin x\) | Синус x |
math.cos(x) |
\(\cos x\) | Косинус x |
К примеру, чтобы посчитать \(\sin \frac{\pi}{2}\) запишем math.sin(math.pi / 2)
, а чтобы посчитать \(\sqrt{16}\) - запишем
x
. Модуль
math
содержит и другие функции, о которых будет рассказано на последующих занятиях.
Ввод значений
Чтобы ввести значение с клавиатуры, используется функция input
. Введённое значение имеет строковый тип str
:
В примере выше в переменная n
будет ссылаться на введённую строку.
Чтобы сразу преобразовать вводимое значение в нужный тип, используют вложенный вызов преобразования типов:
При вызове функции input
можно указать строку с текстом запроса, который увидит пользователь перед вводом значения.
Примеры
Познакомьтесь с готовыми решениями задач. Ответьте на вопросы после кода решения каждой задачи.
Пример № 1 (ex01.py)
Вычислите среднее арифметическое двух чисел.
print("Среднее арифметическое двух чисел") # ввод первого числа num1 = float(input("Введите первое число ")) # ввод второго числа num2 = float(input("Введите второе число ")) ''' вычисление среднего арифметического чтобы сложение выполнилось раньше деления слагаемые помещены в скобки ''' average = (num1 + num2) / 2 print("Ответ: ", average)
В строках 3 и 5 вводятся два числа. Функция float
используется чтобы преобразовать введённые значения в
x
вещественное число. Ответ выводится в
x
?
четырнадцатой строке.
Пример № 2 (ex02.py)
Напишите программу вычисляющую корни квадратного уравнения по заданным коэффициентам a, b и c.
Для нахождения корней уравнения используйте формулу:
\[ x=\frac{-b\pm\sqrt{D}}{2a} \]
где \(D=b^2-4ac\).
#загрузка модуля содержащего математические функции import math print("Вычисление корней квадратного уравнения") #ввод коэффициентов квадратного уравнения a = float(input("введите коэффициент a ")) b = float(input("введите коэффициент b ")) c = float(input("введите коэффициент c ")) D = b ** 2 - 4 * a * c ''' для вычисления корня квадратного используется функция sqrt модуля math ''' #вычисление первого корня уравнения root1 = (-b + math.sqrt(D)) / (2 * a) #вычисление второго корня root2 = (-b - math.sqrt(D)) / (2 * a) #вывод ответа на экран print("Корни уравнения: ", root1, root2)
В строке
x импортируем модуль math
, чтобы использовать функцию извлечения квадратного корня sqrt
. Дискриминант вычисляется в строке
x . В этой строке оператор **
нужен для
x
возведения коэффициента b в квадрат.
Разминка
В следующих заданиях замените прочерки на код, необходимый для решения задачи, или напишите код самостоятельно.
Вычислите значение следующих выражений, с помощью Python: \[ \frac{4.2 \cdot 3}{10.5} + 1.5^3 \]
Значение этого выражения равно x .
\[ \frac{n(n-1)}{2} \]
где \(n=7.5\).
Значение этого выражения равно x .
\[ \lvert 4 - 20\ div\ 3 \rvert^3 \]
Значение этого выражения равно x ? .
Задания для самостоятельной работы
Откройте среду разработки и решите следующие задачи самостоятельно.
Задание № 1 (sam01.py)
Дана длина ребра куба a. Найти объем куба V и площадь его боковой поверхности S. Длина ребра вводится с клавиатуры.
Составьте код решения из следующих инструкций:
print("Объем", V)
print("Площадь боковой поверхности", S)
a = float(input("длина ребра куба: "))
S = a ** 2 * 6
V = a ** 3
Задание № 2 (sam02.py)
Напишите программу вычисляющую объём и площадь поверхности сферы. Радиус сферы вводится с клавиатуры. Для вычислений используйте следующие формулы:
\[ V=\frac{4}{3}\pi r^3 \]
\[ S=4\pi r^2 \]
где r – радиус сферы.
math
, записав math.pi
.
**
.
# импортируем модуль math
import math
# вводим радиус сферы
r = float(input("Введите радиус сферы: "))
# сохраняем объём сферы в переменной V
V = 4 / 3 * math.pi * r ** 3
# сохраняем площадь поверхности сферы в переменной S
S = 4 * math.pi * r ** 2
# выводим значения в переменных V и S на экран
print("Объем", V)
print("Площадь боковой поверхности", S)
Задание № 3 (sam03.py)
Общая стоимость пиццы определяется произведением её площади на стоимость \(1\,м^2\) пиццы. Рассчитайте общую стоимость пиццы по заданному радиусу и стоимости \(1\,м^2\). Радиус и стоимость вводятся с клавиатуры.
Задание № 4 (sam04.py)
Напишите программу определяющую расстояние до грозы, основываясь на времени прошедшем между вспышкой молнии и громом. Скорость звука в воздухе равна 331 м/с. Время в секундах вводится с клавиатуры.
Задание № 5 (sam05.py)
Магазин продаёт кофе по цене 100 рублей за килограмм плюс стоимость доставки. Доставка одного килограмма кофе стоит 0,85 рубля за килограмм. Напишите программу, вычисляющую общую стоимость заказа исходя из веса кофе. Вес в килограммах вводится с клавиатуры.
Задание № 6 (sam06.py)
Расстояние между двумя точками A и B координатной плоскости с соответствующими координатами (x1, y1) и (x2, y2) рассчитывается по следующей формуле:
\[ L=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} \]
Напишите программу вычисляющую расстояние между двумя точками. Координаты точек вводятся с клавиатуры.
math
чтобы использовать функцию извлечения квадратного корня sqrt
.