JavaRush /Курсы /Модуль 1: Python Core /Работа с числовыми типами

Работа с числовыми типами

Модуль 1: Python Core
4 уровень , 2 лекция
Открыта

3.1 Числовые типы: int, float, complex

Python имеет несколько числовых типов, каждый из которых подходит для различных задач и обработки данных. Мы уже упоминали типы данных int, float, complex, а также булевы типы bool, которые являются подклассом целых чисел. Теперь разберем каждый из этих типов более подробно.

int (Целые числа):

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

float (Числа с плавающей точкой):

Эти числа используются для представления действительных чисел и могут содержать десятичные точки. Python реализует числа с плавающей точкой в соответствии со стандартом IEEE 754 double-precision, что дает точность примерно 15 десятичных цифр после запятой.

complex (Комплексные числа):

Комплексные числа имеют действительную и мнимую часть. И та, и другая, представляются числами с плавающей точкой. В Python для обозначения мнимой части используется суффикс j или J. Например, комплексное число можно создать так:

complex_number = 3 + 5j

bool (Булевы значения):

В Python True и False являются специализированными версиями целых чисел и функционируют как 1 и 0 соответственно. Это позволяет их использовать в арифметических операциях и других математических выражениях.

Арифметические операции:

Python поддерживает все основные арифметические операции, включая сложение, вычитание, умножение, деление, деление нацело, взятие остатка от деления и возведение в степень. Например:

  • Сложение: 3 + 2
  • Вычитание: 5 - 2
  • Умножение: 2 * 3
  • Деление: 7 / 2
  • Деление нацело: 7 // 2
  • Остаток от деления: 7 % 2
  • Возведение в степень: 2 ** 3

Преобразование типов:

Мы уже говорили о преобразовании (или приведении) типов. Одни числа в другие можно переводить с помощью функций приведения типов, таких как int(), float() и complex().

Некоторые вопросы преобразования числовых типов мы уже рассмотрели ранее, другие рассмотрим более подробно в следующих лекциях.

3.2 Псевдослучайные числа

Иногда программист сталкивается с простыми, казалось бы, задачами: «отобрать случайный фильм для вечернего просмотра из определенного списка», «выбрать победителя лотереи», «перемешать список песен при тряске смартфона», «выбрать случайное число для шифрования сообщения». При этом каждый раз у него возникает очень закономерный вопрос: а как получить это самое случайное число?

Получить «настоящее» случайное число довольно-таки трудно. Вплоть до того, что в компьютер встраивают специальные математические сопроцессоры, которые умеют генерировать такие числа, с выполнением всех требований к «истинной случайности».

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

Есть много алгоритмов генерации последовательности псевдослучайных чисел и почти все из них генерируют следующее случайное число на основе предыдущего и еще каких-то вспомогательных чисел.

Например, данная программа выведет на экран 1000 неповторяющихся чисел:


a = 41
c = 11119
m = 11113
seed = 1
                   

def get_next_random():
    global seed
    seed = (a * seed + c) % m
    return seed
                   
for t in range(1000):
    x = get_next_random()
    print(x)              

Кстати, мы говорим не о псевдослучайных числах, а именно о последовательности таких чисел. Так как глядя на одно число невозможно понять, случайное оно или нет.

Случайное число можно получить разными способами:

def get_random_number():
    return 4  # это точно случайное число (z выкинул его с помощью кубиков), см. "Шутка про кубики"               

3.3 Библиотека random

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

Библиотека random, хоть и встроенная, все-таки является отдельной библиотекой, поэтому прежде чем использовать ее, нужно подключить к нашему коду. Делается это с помощью ключевого слова import. Пример:


import random 

В библиотеке random есть много интересных методов, но сегодня мы познакомимся только с двумя из них: метод random() и метод randint(). Они выполняют похожие, но разные задачи:

Метод random.random():

Этот метод возвращает случайное число с плавающей точкой между 0.0 и 1.0. Числа генерируются равномерно в этом диапазоне. Это означает, что каждое число внутри интервала имеет одинаковую вероятность выбора.


import random 

probability = random.random()
print("Случайная вероятность:", probability)               

Метод random.randint(a, b):

Эта функция возвращает случайное целое число в диапазоне от a до b включительно. В отличие от random.random(), которая возвращает случайное число с плавающей запятой в диапазоне от 0 до 1, randint() используется, когда нужно выбрать целое число. Например, random.randint(1, 10) может вернуть любое целое число от 1 до 10, включая оба конечных значения.


import random

dice_roll = random.randint(1, 6)  # Имитация броска игральной кости
print("Выпало число:", dice_roll)               

Это очень полезные и интересные методы, так что пользуйтесь на здоровье.

3.4 Библиотека math

Ну, раз пошла такая пьянка, давайте познакомлю вас с еще одной интересной библиотекой. Это библиотека math. В ней содержатся основные математические функции и константы, такие как числа π и e.

И так же, как и библиотеку random, ее нужно импортировать перед использованием:


import math 

Вот таблица с основными функциями и константами библиотеки math в Python:

Функция/Константа Описание
math.pi Константа π, приблизительно равная 3.14159
math.e Основание натурального логарифма, приблизительно равно 2.71828
math.sqrt(x) Возвращает квадратный корень из x
math.exp(x) Возвращает e в степени x
math.log(x[, base]) Возвращает логарифм x по основанию base, если base указан; в противном случае возвращает натуральный логарифм.
math.cos(x) Возвращает косинус x, где x указан в радианах
math.sin(x) Возвращает синус x, где x указан в радианах
math.tan(x) Возвращает тангенс x, где x указан в радианах
math.ceil(x) Округляет число вверх до ближайшего целого
math.floor(x) Округляет число вниз до ближайшего целого
math.factorial(x) Возвращает факториал x

Даже если вы не сильно любите математику и не собираетесь использовать эти функции в ближайшие 10 лет, тут есть как минимум три очень полезных:

  • sqrt() — квадратный корень из числа
  • ceil() — округление вверх до ближайшего целого
  • floor() — округление вниз до ближайшего целого

Примеры:


import math

number = 9.7
rounded_up = math.ceil(number)  # Округляет вверх, результат 10 
rounded_down = math.floor(number)  # Округляет вниз, результат 9 
            
print("Округленное вверх число:", rounded_up)
print("Округленное вниз число:", rounded_down)              
2
Задача
Модуль 1: Python Core, 4 уровень, 2 лекция
Недоступна
Математика 8 класса
Математика 8 класса
2
Задача
Модуль 1: Python Core, 4 уровень, 2 лекция
Недоступна
Случайный середнячок
Случайный середнячок
Комментарии (15)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3583872 Уровень 7
25 сентября 2025
Не принимает никакое решение во 2 задаче.Я уже начал думать , что я чёт не понимаю, перерыл кучу инфы, написал разными способами и в конечном итоге пришёл к готовому решению, но обработчик не работает. Кучу времени просрал, но хоть в теме разобрался:)
Anonymous #1598703 Уровень 11
5 августа 2025
Зачем так нужна функция округления вниз, если преобразование к int делает то же самое?
Stepan Vorobyev Уровень 7
27 августа 2025
Предположу, что это необходимо, когда нужно отбросить знаки после запятой, не меняя тип данных
Vanil'ka Уровень 25
22 июля 2025
Забыл про генераторы совсем. Использовал append() 😅
alex_us Уровень 20
9 апреля 2025
При выполнении задачи Математика за 8 класс в плагине (без проверки) - бесконечно запрашивает ввод числа. Поправьте
Дмитрий Уровень 1
8 января 2025
Кто может обьяснить почему на вашей платформе результат этого решения float number? import random total = 0 for random_num in range(10): random_num = random.randint(1,100) total += random_num print(total / 10) Output: 56.4 A на pycharm результат решения этого же блока кода трехзначный int Output: 596
Игорь Уровень 25
10 января 2025
возможно, в разных местах генерировали разные псевдослучайные числа
Дмитрий Уровень 1
12 января 2025
Но вводные данные одинаковые.
Optimus Уровень 7
16 января 2025
У вас явно нет деления в чарме, тк результ среднеарифметического должен быть от 1-100, это раз. А при делении в питоне всегда результат float, это два.
Марина Уровень 14
3 января 2025
Как создать список из 31 элемента от 25 с шагом в 25 и потом получить их сумму? везде, где пишется про создание списков - обязательно указывать от какого числа и до какого ((( а если я конечное не знаю, есть только первое, шаг и количество элементов - как быть? не могу понять.. Помогите, пожалуйста
Дмитрий Уровень 27
10 февраля 2025
a = [25] # создаём первый элемент списка for i in range(30): # запускаем цикл добавления остальных 30-ти элементов a.append(a[i] + 25) # добавляем следующий элемент с шагом 25 от предыдущего a_summ=sum(a) # получаем сумму всех элементов списка
Николай Уровень 7
10 июля 2024
Для чего нужны комплексные числа? Где используются? Примеры использования? Как сильно они нужны на практике?
Бауыржан Уровень 1
10 июля 2024
В вышмате используются комплексные числа, для решения всяких уравнений. В питоне мб тебе никогда не пригодятся
Александр Уровень 19 Expert
25 декабря 2024
Что такое комплексные числа? Делюсь с вами ответом от ChatGPT: Комплексные числа — это числа, которые представляют собой сумму действительной и мнимой частей. Их общая форма: 𝑧=𝑎+𝑏𝑖 Где: 𝑎 — действительная часть. 𝑏 — мнимая часть. 𝑖 — мнимая единица, которая определяется как корень квадратный из -1. Пример: 3+4𝑖, где 3 — действительная часть, а 4𝑖 — мнимая. Использование в программировании Комплексные числа активно используются в задачах, связанных с математикой, физикой и инженерией. Пример применения: Обработка сигналов: Комплексные числа используются для анализа и обработки звуковых или радиосигналов (например, через преобразование Фурье). Компьютерная графика: Они помогают описывать вращения, масштабирования и другие преобразования в двумерном пространстве. Машинное обучение: В некоторых алгоритмах, например в квантовом машинном обучении, используются комплексные числа. Языки программирования: В Python комплексные числа встроены в стандартные возможности: z = 3 + 4j # Комплексное число print(abs(z)) # Модуль числа print(z.conjugate()) # Сопряженное число Пример кода: Создание программы для вычисления модулей комплексных чисел: import cmath # Модуль для работы с комплексными числами # Определяем комплексное число z = 3 + 4j # Вычисление модуля modulus = abs(z) # Вывод сопряженного числа conjugate = z.conjugate() print("Комплексное число:", z) print("Модуль:", modulus) print("Сопряженное число:", conjugate) Применение в жизни Электротехника: Используются для расчета переменного тока и напряжения. Импеданс (сопротивление цепи) часто выражается комплексным числом. Медицина: При анализе изображений (например, МРТ) применяются алгоритмы на основе комплексных чисел. Аэродинамика: Используются для моделирования потоков воздуха и жидкостей. Экономика: В некоторых моделях экономических систем применяется сложная динамика, связанная с комплексными числами.
Дмитрий Уровень 27
10 февраля 2025
Господи Милосердный! Да на них всё держится. На самом деле все числа вокруг нас - комплексные, просто мы их схлопываем до действительной проекции. Звук, воздух, свет, расстояния, направления - это всё комплексные числа, т.е. разложение вектора на ортогональные составляющии (ортогональные - это такие, перемножение которых всегда равно нулю).