Занятие № 1. Числовые типы данных. Математические вычисления

Цель: научиться применять операторы ввода и вывода; выполнять вычисления с применением числового типа данных; научиться применять модуль math.

Теория

Повторите необходимые теоретические сведения и ответьте на вопросы.

Литералы и типы данных

Программа манипулирует значениями различных типов. Значения можно классифицировать по их типу. Для каждого типа есть набор литералов - буквальных значений, необходимых для представление значения данного типа. В следующей таблице показаны примеры нескольких типов с которыми мы столкнёмся при решении задач.

Таблица 1: Базовые типы данных
Тип данных Примеры литералов
Целые числа -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 можно вывести данные на экран. В круглых скобках через запятую можно указать несколько выводимых значений.

>>> print('Привет, мир!')
Привет, мир!
>>> print('Привет, мир!', 2024)
Привет, мир! 2024

Например, чтобы вывести на экран число 2024, нужно записать x ? .

С помощью следующих функций можно преобразовать значения одного типа в другой.

Таблица 2: Функции для преобразования типов
Функция Итоговый тип
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(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 .

Операторы и операнды

Для выполнения действий над значениями понадобятся операторы - символы, обозначающие определённую операцию. Оператор совершает действия над операндами.

В таблице показаны операторы и приоритет их выполнения.

Таблица 3: Операторы
Оператор Приоритет Описание Пример
( ) 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 ? .

Переменные

Переменная - это имя, которое ссылается на значение.

Имя переменной должно подчиняться следующим правилам:

  1. Может состоять из одного слова (без пробелов).
  2. Может состоять только из букв, цифр и символа подчёркивания _.
  3. Не может начинаться с цифры.

Это значит, что имя переменной x sum num будет некорректным, а имя переменной x _name записано правильно.

Чтобы присвоить переменной значение используется инструкция присваивания:

message = "Как дела?"   # переменная строка
n = 17                  # переменная с целым числом
pi = 3.14159            # переменная с вещественным числом

Оператор присваивания = связывает имя переменной с её значением. В Python не нужно заранее указывать тип переменной. Значения обладают типом, имена переменных - нет.

Переменная ссылается на объект (Рисунок 1 (a)). Если мы присваиваем переменной другое значение, ссылка на предыдущее значение (объект) исчезает, и создаётся новая ссылка (Рисунок 1 (b)). На один объект могут ссылаться множество переменных (Рисунок 1 (c)).

flowchart LR
    message[message]-->B("Как дела?")
    n[n] --> val(17)
    pi[pi] --> val2(3.14159)
(a)
flowchart LR
    n[n] --> val(19)
    m[sum] --> val
(c)
Рисунок 1

Инструкции и выражения

Инструкция - это минимальный набор действий, которые может выполнить интерпретатор. Иными словами, после выполнения инструкции есть эффект её выполнения, но нет конкретного значения, которое можно назвать результатом выполнения инструкции. К инструкциям относится присваивание, алгоритмические конструкции if, while, for, импорт модулей import и др.

Выражение - это комбинация литералов, имён переменных, операторов и вызовов функций. Значение выражения должно быть вычислено. Результатом вычисления выражения является значение (или объект).

Везде в коде программы где может располагаться литерал, может быть и выражение. В следующем коде перед тем как вывести значение на экран, интерпретатор Python должен вычислить значение выражения:

print(16 - 2 * 5 // 3 + 1)

В результате на экране выведется число x ? .

Для математических вычислений может понадобится модуль math. Чтобы использовать его в скрипте, нужно добавить инструкцию импорта:

import math

Модуль math содержит следующие функции и константы:

Таблица 4: Модуль 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("Введите своё имя: ")

В примере выше в переменная n будет ссылаться на введённую строку.

Чтобы сразу преобразовать вводимое значение в нужный тип, используют вложенный вызов преобразования типов:

age = int(input("Введите ваш возраст: "))

При вызове функции input можно указать строку с текстом запроса, который увидит пользователь перед вводом значения.

Примеры

Познакомьтесь с готовыми решениями задач. Ответьте на вопросы после кода решения каждой задачи.

Пример № 1 (ex01.py)

Вычислите среднее арифметическое двух чисел.

print("Среднее арифметическое двух чисел")
# ввод первого числа
num1 = float(input("Введите первое число "))
# ввод второго числа
num2 = float(input("Введите второе число "))

'''
вычисление среднего арифметического
чтобы сложение выполнилось раньше деления
слагаемые помещены в скобки
'''
average = (num1 + num2) / 2

print("Ответ: ", average)

      
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)

      
#загрузка модуля содержащего математические функции
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. Длина ребра вводится с клавиатуры.

Составьте код решения из следующих инструкций:

a = float(input("длина ребра куба: "))
V = a ** 3
S = a ** 2 * 6
print("Объем", V)
print("Площадь боковой поверхности", 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 – радиус сферы.


Значение \(\pi\) можно взять из модуля 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.