В этом листочке речь пойдет о действительных числах, имеющих тип 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 |
Константа π |
Упражнения
01: Дробная часть
Дано положительное действительное число X. Выведите его дробную часть абсолютно точно. Исходное число содержит не более 6 знаков после десятичной точки.
Ввод | Вывод |
---|---|
17.9 |
0.9 |
02: Первая цифра после точки
Дано положительное действительное число X. Выведите его первую цифру после десятичной точки. При решении этой задачи нельзя пользоваться условной инструкцией и циклом.
Ввод | Вывод |
---|---|
1.79 |
7 |
03: Округление по российским правилам
По российский правилам числа округляются до ближайшего целого числа, а если дробная часть числа равна 0.5, то число округляется вверх.
Дано неотрицательное число x
, округлите его по этим правилам.
Обратите внимание, что функция round
не годится для этой задачи!
Ввод | Вывод |
---|---|
2.3 |
2 |
2.5 |
3 |
04: Площадь треугольника
Даны длины сторон треугольника. Вычислите площадь треугольника.
Ввод | Вывод |
---|---|
3 |
6.0 |
1 |
0.4330127018922193 |
05: Часы - 1
С начала суток прошло H часов, M минут, S секунд (0≤H<12, 0≤M<60, 0≤S<60). По данным числам H, M, S определите угол (в градусах), на который повернулаcь часовая стрелка с начала суток и выведите его в виде действительного числа.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Ввод | Вывод |
---|---|
1 |
31.05 |
06: Часы - 2
С начала суток часовая стрелка повернулась на угол в α градусов. Определите на какой угол повернулась минутная стрелка с начала последнего часа. Входные и выходные данные — действительные числа.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Пример
Ввод | Вывод |
---|---|
190 |
120.0 |
07: Часы - 3
С начала суток часовая стрелка повернулась на угол в α градусов. Определите сколько полных часов, минут и секунд прошло с начала суток, то есть решите задачу, обратную задаче F. Запишите ответ в три переменные и выведите их на экран.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Ввод | Вывод |
---|---|
31.05 |
1 2 6 |
08: Проценты
Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада. Вклад составляет X рублей Y копеек. Определите размер вклада через год.
Программа получает на вход целые числа P, X, Y и должна вывести два числа: величину вклада через год в рублях и копейках. Дробная часть копеек отбрасывается.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Ввод | Вывод |
---|---|
12 |
200 48 |
09: Сложные проценты
Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада через год. Вклад составляет X рублей Y копеек. Определите размер вклада через K лет.
Программа получает на вход целые числа P, X, Y, K и должна вывести два числа: величину вклада через год в рублях и копейках. Дробное число копеек по истечение года отбрасывается. Перерасчет суммы вклада (с отбрасыванием дробных частей копеек) происходит ежегодно.
Ввод | Вывод |
---|---|
12 |
315 43 |
10: Цена товара
Цена товара обозначена в рублях с точностью до копеек, то есть действительным числом с двумя цифрами после десятичной точки. Запишите в две целочисленные переменные стоимость товара в виде целого числа рублей и целого числа копеек и выведите их на экран.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Ввод | Вывод |
---|---|
10.35 |
10 35 |
11: Квадратное уравнение - 1
Даны действительные коэффициенты a, b, c, при этом a≠0. Решите квадратное уравнение ax2+bx+c=0 и выведите все его корни. Если уравнение имеет два корня, выведите два корня в порядке возрастания, если один корень — выведите одно число, если нет корней — не выводите ничего.
Ввод | Вывод |
---|---|
1 |
-1.0 2.0 |
12: Квадратное уравнение - 2
Даны произвольные действительные коэффициенты a, b, c. Решите уравнение ax2+bx+c=0.
Если данное уравнение не имеет корней, выведите число 0. Если уравнение имеет один корень, выведите число 1, а затем этот корень. Если уравнение имеет два корня, выведите число 2, а затем два корня в порядке возрастания. Если уравнение имеет бесконечно много корней, выведите число 3.
Тесты к этой задаче закрытые.
Ввод | Вывод |
---|---|
1 |
2 -1.0 2.0 |
-1 |
1 1.0 |
13: π2/6
По данному числу n вычислите сумму 1+122+132+...+1n2.
Ввод | Вывод |
---|---|
3 |
1.3611111111111112 |
Знаете ли вы, что этот ряд сходится к π2/6?
14: ln 2
По данному числу n вычислите сумму 1−12+13−14++...+(−1)n+1n.
Операцией возведения в степень пользоваться нельзя. Алгоритм должен иметь сложность O(n). Попробуйте также обойтись без использования инструкции if.
Ввод | Вывод |
---|---|
3 |
0.8333333333333333 |
Этот ряд сходится к значению ln 2.
15: Геометрическая прогрессия
Забудьте формулу суммы геометрической прогрессии и вычислите сумму 1+x+x2+...+xn.
Программа получает на вход целое число n и действительное число x. Операцией возведения в степень пользоваться нельзя. Алгоритм должен иметь сложность O(n) (то есть должен содержать только один цикл).
Ввод | Вывод |
---|---|
4 |
1.1111 |
16: Просто π
По данному числу n вычислите сумму 4(1−13+15−17+...+(−1)n2n+1)
Операцией возведения в степень пользоваться нельзя. Алгоритм должен иметь сложность O(n).
Ввод | Вывод |
---|---|
2 |
3.466666666666667 |
Этот ряд сходится к числу π.
17: Экспонента
По данному целому числу n и действительному числу x вычислите сумму 1+x1!+x22!+x33!+...+xnn!
Операцией возведения в степень пользоваться нельзя. Алгоритм должен иметь сложность O(n).
Ввод | Вывод |
---|---|
2 |
1.105 |
10 |
1.0 |
100 |
2.7182818284590455 |
Этот ряд сходится к ex при росте n.
18: Косинус
По данному целому числу n и действительному числу x вычислите сумму 1−x22!+x44!−x66!+...+(−1)nx2n(2n)!
Операцией возведения в степень пользоваться нельзя. Алгоритм должен иметь сложность O(n).
Ввод | Вывод |
---|---|
2 |
0.9950041666666667 |
10 |
1.0 |
50 |
-0.9999999999964793 |
Этот ряд сходится к cosx при росте n (углы измеряются в радианах).
19: Сумма с корнями
По данным натуральным числам n и a вычислите сумму √a+√2a+...+√(n−1)a+√na
Ввод | Вывод |
---|---|
3 |
2.1306300854586997 |
20: Схема Горнера
Дан многочлен P(x)=anxn+an−1xn−1+...+a1x+a0 и число x. Вычислите значение этого многочлена, воспользовавшись схемой Горнера: P(x)=(...(((anx+an−1)x+an−2)x+an−3)...)x+a0
Сначала программе подается на вход целое неотрицательное число n≤20, затем действительное число x, затем следует n+1 вещественное число — коэффициенты многочлена от старшего к младшему. Программа должна вывести значение многочлена.
При решении этой задачи нелья использовать массивы и операцию возведения в степень. Программа должна иметь сложность O(n).
Ввод | Вывод |
---|---|
1 |
1.0 |
2 |
1.75 |
21: Система линейных уравнений - 1
Даны числа a, b, c, d, e, f. Известно, что система линейных уравнений {ax+by=e,cx+dy=f.
имеет ровно одно решение. Выведите два числа x и y, являющиеся решением этой системы.
Ввод | Вывод |
---|---|
1 |
3.0 3.0 |
Баллистическая траектория
Пусть в момент времени 0 снаряд находится в точке с координатами x0 и y0 и имеет начальную скорость, компоненты которой вдоль осей равны Vx0 и Vy0 соответственно. Ускорение свободного падения равно g. Тогда координаты снаряда в момент времени t можно найти по формулам:
xt=x0+t⋅Vx0
yt=y0+t⋅Vy0−g⋅t22
22: Баллистическая задача - 1
Самолет летит на высоте h метров со скоростью v м/c. Ему необходимо поразить бомбой цель. На каком расстоянии x от цели (в метрах) необходимо выпустить бомбу?
Программа получает на вход вещественные числа h и v и должна вывести значение x.
В этой и последующей задачах ускорение свободного падения g=9.8, сопротивлением воздуха пренебречь.
Ввод | Вывод |
---|---|
1000 |
4285.714285714285 |
23: Баллистическая задача - 2
Пушка стреляет снарядом со скоростью v м/c под углом α к горизонту (в радианах). На каком расстоянии x (в метрах) от пушки упадет снаряд?
Программа получает на вход числа v и α и должна вывести значение x.
Ввод | Вывод |
---|---|
500 |
9934.141385424757 |
24: Баллистическая задача - 3
В условиях предыдущей задачи по данной скорости выстрела v и расстоянию до цели x определите, под каким углом α к горизонту (в радианах) необходимо произвести выстрел для поражения цели.
Программа получает на вход числа v и x и должна вывести все возможные значения α в порядке возрастания. Если поразить цель невозможно, программа должна вывести одно число 0.
Ввод | Вывод |
---|---|
500 |
0.2014022918218565 |
100 |
0 |
25: Баллистическая задача - 4
Пушка стреляет снарядом со скоростью v м/c и должна поразить цель, находящуюся на расстоянии x метров по горизонтали и на высоте y метров. Под каким углом α к горизонту (в радианах) необходимо произвести выстрел?
Программа получает на вход числа v, x, y и должна вывести все возможные значения α в порядке возрастания. Если поразить цель невозможно, программа должна вывести одно число 0.
Ввод | Вывод |
---|---|
500 |
0.2118388917004956 |
400 |
0 |
26: Система линейных уравнений - 2
Даны числа a, b, c, d, e, f. Решите систему линейных уравнений {ax+by=e,cx+dy=f.
Вывод программы зависит от вида решения этой системы.
Если система не имеет решений, то программа должна вывести единственное число 0
.
Если система имеет бесконечно много решений, каждое из которых имеет вид y=kx+b, то
программа должна вывести число 1
, а затем значения k и b.
Если система имеет единственное решение (x0,y0), то программа должна вывести
число 2
, а затем значения x0 и y0.
Если система имеет бесконечно много решений вида x=x0, y — любое, то
программа должна вывести число 3
, а затем значение x0.
Если система имеет бесконечно много решений вида y=y0, x — любое, то
программа должна вывести число 4
, а затем значение y0.
Если любая пара чисел (x,y) является решением, то программа должна вывести число 5
.
Тесты к этой задаче закрытые.
Ввод | Вывод |
---|---|
1 |
2 3.0 3.0 |
1 |
1 -1.0 1.0 |
0 |
4 0.5 |