Нецелые числа

В этом листочке речь пойдет о нецелых числах, имеющих тип float.

Обратите внимание, что если вы хотите считать с клавиатуры нецелое число, то результат, возращаемый функцией input() необходимо преобразовывать к типу float:

x = float(input())

Числа типа float представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичных дробей в русский текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись “с плавающей точкой” (также называемая “научная” или “стандартная” запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496·1011 м, а масса молекулы воды 2.99·10-23 г.

Числа с плавающей точкой в программах на языке Питон, а также при вводе и выводе записавыются в виде мантиссы, затем пишется буква e, затем пишется порядок. Пробелы внутри этой записи не ставятся. Например, указанные выше константы можно записать в виде 1.496e11 и 2.99e-23. Перед самим числом также может стоять знак минус.

Напомним, что результатом операции деления / всегда является число типа float, в то время как результатом операции // является целое число.

Преобразование чисел типа float к целому производится с округлением в сторону нуля, то есть 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 Константа π

A: Дробная часть

Дано положительное действительное число X. Выведите его дробную часть.

Ввод Вывод
17.9
0.9

B: Первая цифра после точки

Дано положительное действительное число X. Выведите его первую цифру после десятичной точки. При решении этой задачи нельзя пользоваться условной инструкцией и циклом.

Ввод Вывод
1.79
7

C: Округление по российским правилам

По российский правилам числа округляются до ближайшего целого числа, а если дробная часть числа равна 0.5, то число округляется вверх.

Дано неотрицательное число x, округлите его по этим правилам. Обратите внимание, что функция round не годится для этой задачи!

Ввод Вывод
2.3
2
2.5
3

E: Часы - 1

С начала суток прошло H часов, M минут, S секунд (0 ≤ H <12, 0 ≤ M < 60, 0 ≤ S < 60). По данным числам H, M, S определите угол (в градусах), на который повернулаcь часовая стрелка с начала суток и выведите его в виде действительного числа.

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

Ввод Вывод
1
2
6
31.05

F: Часы - 2

С начала суток часовая стрелка повернулась на угол в A градусов. Определите на какой угол повернулась минутная стрелка с начала последнего часа. Входные и выходные данные — действительные числа.

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

Пример

Ввод Вывод
190
120

G: Часы - 3

С начала суток часовая стрелка повернулась на угол в A градусов. Определите сколько полных часов, минут и секунд прошло с начала суток, то есть решите задачу, обратную задаче F. Запишите ответ в три переменные и выведите их на экран.

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

Ввод Вывод
31.05
1 2 6

H: Проценты

К задачам H и I существует подсказка. Если вы написали программу, сдали ее в проверяющую систему, а она ведет себя странно, пожалуйста, придите про это поговорить и попросите подсказку.

Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада. Вклад составляет X рублей Y копеек. Определите размер вклада через год.

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

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

Ввод Вывод
12
179
0
200 48

I: Сложные проценты

Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада через год. Вклад составляет X рублей Y копеек. Определите размер вклада через K лет.

Программа получает на вход целые числа P, X, Y, K и должна вывести два числа: величину вклада через K лет в рублях и копейках. Дробное число копеек по истечение года отбрасывается. Перерасчет суммы вклада (с отбрасыванием дробных частей копеек) происходит ежегодно.

Ввод Вывод
12
179
0
5
315 43

J: Цена товара

Цена товара обозначена в рублях с точностью до копеек, то есть действительным числом с двумя цифрами после десятичной точки. Запишите в две целочисленные переменные стоимость товара в виде целого числа рублей и целого числа копеек и выведите их на экран.

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

Ввод Вывод
10.35
10 35

O: Геометрическая прогрессия*

Забудьте формулу суммы геометрической прогрессии и вычислите сумму 1+x+x2+...+xn.

Программа получает на вход целое число n и действительное число x. Операцией возведения в степень пользоваться нельзя. Алгоритм должен содержать только один цикл.

Ввод Вывод
4
0.1
1.1111