Действительные числа в Python
Действительные (вещественные) числа
В этом листочке речь пойдет о действительных числах, имеющих тип float.
Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возвращаемый функцией input() необходимо преобразовывать к типу float:
x = float(input())
Действительные (вещественные) числа представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичных дробей в русский текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись «с плавающей точкой» (также называемая «научная» запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496 * 1011, а масса молекулы воды 2.99 * 10-23.
Числа с плавающей точкой в программах на языке Питон, а также при вводе и выводе записываются в виде мантиссы, затем пишется буква e, затем пишется порядок. Пробелы внутри этой записи не ставятся. Например, указанные выше константы можно записать в виде 1.496e11 и 2.99e-23. Перед самим числом также может стоять знак минус.
Напомним, что результатом операции деления / всегда является действительное число, в то время как результатом операции // является целое число.
Преобразование действительных чисел к целому производится с округлением в сторону нуля, то есть int(1.7) == 1, int(-1.7) == -1.
Библиотека math
Для проведения вычислений с действительными числами язык Питон содержит много дополнительных функций, собранных в библиотеку (модуль), которая называется math.
Для использования этих функций в начале программы необходимо подключить математическую библиотеку, что делается командой
import math
Функция от одного аргумента вызывается, например, так: math.sin(x) (то есть явно указывается, что из модуля math используется функция sin). Вместо числа x может быть любое число, переменная или выражение. Функция возращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:
y = math.sin(x)
print(math.sin(math.pi/2))
Другой способ использовать функции из библиотеки math, при котором не нужно будет при каждом использовании функции из модуля math указывать название этого модуля, выглядит так:
from math import *
y = sin(x)
print(sin(pi/2))
Ниже приведен список основных функций модуля math. Более подробное описание этих функций можно найти на сайте с документацией на Питон.
Некоторые из перечисленных функций (int, round, abs) являются стандартными и не требуют подключения модуля math для использования.
Округление
Функция | Описание |
int(x) | Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math. |
round(x) | Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа. |
round(x, n) | Округляет число x до n знаков после точки. Это стандартная функция, для ее использования не нужно подключать модуль math. |
floor(x) | Округляет число вниз (“пол»), при этом floor(1.5) == 1, floor(-1.5) == -2 |
ceil(x) | Округляет число вверх («потолок»), при этом ceil(1.5) == 2, ceil(-1.5) == -1 |
trunc(x) | Округление в сторону нуля (так же, как функция int). |
abs(x) | Модуль (абсолютная величина). Это - стандартная функция. |
fabs(x) | Модуль (абсолютная величина). Эта функция всегда возвращает значение типа float. |
Корни, степени, логарифмы
Функция | Описание |
sqrt(x) | Квадратный корень. Использование: sqrt(x) |
pow(a, b) | Возведение в степень, возвращает ab. Использование: pow(a,b) |
exp(x) | Экспонента, возвращает ex. Использование: exp(x) |
log(x) | Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b. |
log10(x) | Десятичный логарифм |
e | Основание натуральных логарифмов e≈2,71828.... |
Тригонометрия
Функция | Описание |
sin(x) | Синус угла, задаваемого в радианах |
cos(x) | Косинус угла, задаваемого в радианах |
tan(x) | Тангенс угла, задаваемого в радианах |
asin(x) | Арксинус, возвращает значение в радианах |
acos(x) | Арккосинус, возвращает значение в радианах |
atan(x) | Арктангенс, возвращает значение в радианах |
atan2(y, x) | Полярный угол (в радианах) точки с координатами (x, y). |
hypot(a, b) | Длина гипотенузы прямоугольного треугольника с катетами a и b. |
degrees(x) | Преобразует угол, заданный в радианах, в градусы. |
radians(x) | Преобразует угол, заданный в градусах, в радианы. |
pi | Константа π |
Задача №3608. Дробная часть
Дано положительное действительное число X. Выведите его дробную часть.
Входные данные
Вводятся положительное действительное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
17.9 | 0.9 |
Решение
x = float(input())
print(x - int(x))
Задача №3609. Первая цифра после точки
Дано положительное действительное число X. Выведите его первую цифру после десятичной точки. При решении этой задачи нельзя пользоваться условной инструкцией, циклом или строками.
Входные данные
Вводится положительное действительное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1.79 | 7 |
Решение
x = float(input())
print(int(10 * (x % 1)))
Задача №3610. Округление по российским правилам
По российский правилам числа округляются до ближайшего целого числа, а если дробная часть числа равна 0.5, то число округляется вверх.
Дано неотрицательное число x, округлите его по этим правилам. Обратите внимание, что функция round не годится для этой задачи!
Входные данные
Вводится неотрицательное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1.79 | 7 |
Решение
from math import ceil
a = float(input())
x = (a * 10) % 10
if x < 5:
print(int(a))
elif x >= 5:
print(ceil(a))
Задача №3611. Площадь треугольника
Даны длины сторон треугольника. Вычислите площадь треугольника.
Входные данные
Вводятся три положительных числа.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
3 4 5 |
6 |
Ввод | Вывод |
1 1 1 |
0.433013 |
Решение
import math
a, b, c = float(input()), float(input()), float(input())
p = (a + b + c) / 2 # Формула Герона (p - полупериметр треугольника)
s = math.sqrt(p * (p - a) * (p - b) * (p - c))
print(s)
Задача №3612. Часы - 1
С начала суток прошло H часов, M минут, S секунд (0 ≤ H < 12, 0 ≤ M < 60, 0 ≤ S < 60). По данным числам H, M, S определите угол (в градусах), на который повернулаcь часовая стрелка с начала суток и выведите его в виде действительного числа.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.Входные данные
Вводятся три целых неотрицательных числа.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1 2 6 |
31.05 |
Решение
H = int(input())
M = int(input())
S = int(input())
H1 = H * 360 / 12
M1 = M * 360 / 60 / 12
S1 = S * 360 / 60 / 60 / 12
print(H1 + M1 + S1)
Задача №3613. Часы - 2
С начала суток часовая стрелка повернулась на угол в α градусов. Определите на какой угол повернулась минутная стрелка с начала последнего часа. Входные и выходные данные — действительные числа.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Входные данные
Вводится неотрицательное действительное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
1 2 6 |
31.05 |
Решение
a = float(input())
print(a % 30 * 12)
Задача №3614. Часы - 3
С начала суток часовая стрелка повернулась на угол в α градусов. Определите сколько полных часов, минут и секунд прошло с начала суток, то есть решите задачу, обратную задаче F. Запишите ответ в три переменные и выведите их на экран.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Входные данные
Вводится неотрицательное действительное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
31.05 | 1 2 6 |
Решение
a = float(input())
print(int(a // 30), int(a % 30 * 2), int(a % 0.5 * 120))
Задача №3615. Проценты
Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада. Вклад составляет X рублей Y копеек. Определите размер вклада через год.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Входные данные
Программа получает на вход целые числа P, X, Y.
Выходные данные
Программа должна вывести два числа: величину вклада через год в рублях и копейках. Дробная часть копеек отбрасывается.
Примеры
Ввод | Вывод |
12 179 0 |
200 48 |
Решение
P, X, Y = int(input()), int(input()), int(input())
sum = X + Y / 100
rate = 1 + P / 100
year = sum * rate
RUB = year // 1
KOP = (round((year % 1) * 100, 2)) // 1
print(int(RUB), int(KOP))
Задача №3617. Цена товара
Цена товара обозначена в рублях с точностью до копеек, то есть действительным числом с двумя цифрами после десятичной точки. Запишите в две целочисленные переменные стоимость товара в виде целого числа рублей и целого числа копеек и выведите их на экран.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Входные данные
Вводится неотрицательное действительное число.
Выходные данные
Выведите ответ на задачу.
Примеры
Ввод | Вывод |
10.35 | 10 35 |
Решение
import math
a = float(input())
b = math.modf(a)
print(int(b[1]), int(round(b[0], 2) * 100))