Привет, сегодня мы изучим тему int() в Python. Познакомиться с темой можно либо в видеоформате с преподавателем JavaRush университета, либо в более подробной текстовой версии со мной, под видео.

Несколько лет назад ко мне подошел студент с горящими глазами и говорит: "Не понимаю, почему программа постоянно крашится, когда я пытаюсь сложить число с тем, что пользователь вводит!" Я сразу догадался, парень просто не знал про функцию int() в Python. А ведь без неё в программировании — никуда!

Функция int Python — это такая встроенная штука для преобразования типов, которая превращает всякие разные данные в обычные целые числа. Честно говоря, преобразование типов Python нужно буквально везде: когда работаешь с тем, что пользователь набивает на клавиатуре, читаешь файлы, копаешься в данных. Сейчас разложим по полочкам всё про int() в Python — от самых азов до крутых фишек.

Функция int() в Python

Знаете, есть хорошая аналогия. Представьте: вы работаете на кассе в обычном магазине. Приходит покупатель и говорит: "Дайте мне три килограмма яблок". Вы же сразу понимаете — "три" означает цифру 3, и забиваете её в кассовый аппарат. Вот функция int() работает точно так же — она "понимает", что строчка "3" на самом деле должна быть числом 3.

В реальном программировании на Python такие ситуации случаются постоянно:

  • Пользователь вбивает свой возраст как строку, а вам для расчётов нужно именно число
  • Читаете файл — оттуда приходят строки, но для работы нужны числовые значения
  • API отдаёт всё в виде строк, которые надо как-то конвертировать
  • Приходится работать с разными системами счисления — двоичной, восьмеричной, шестнадцатеричной

Python int функция справляется со всеми этими задачами красиво и без головной боли. Она берёт самые разные типы данных и выдаёт на выходе целое число.

Синтаксис функции int()

Когда я только начинал изучать Python, меня поразила простота синтаксиса встроенных функций. У int() очень понятный интерфейс:

int(value, base=10)

Где:

  • value — значение, которое нужно преобразовать в целое число
  • base — основание системы счисления (по умолчанию 10)

Простейший пример:

number = int("123")
print(number)  # Output: 123
print(type(number))  # Output: 

Параметр base особенно полезен при работе с разными системами счисления. Если вы работаете с двоичными данными или шестнадцатеричными цветами в веб-разработке, вы это оцените.

Важно понимать: если параметр value не указан, int() возвращает 0:

empty_int = int()
print(empty_int)  # Output: 0

Преобразование разных типов данных

Конвертация строки в целое число

Самый частый случай использования int() — это преобразование строковых данных. Помню, как один из моих учеников пытался сложить возраст пользователя с числом и получал странную строку вместо суммы:

# Неправильно
age_input = input("Введите ваш возраст: ")  # Пользователь ввел "25"
next_year = age_input + 1  # Ошибка!

# Правильно  
age_input = input("Введите ваш возраст: ")  # Пользователь ввел "25"
age = int(age_input)  # Конвертируем строку в число
next_year = age + 1  # Теперь можем складывать
print(f"В следующем году вам будет {next_year} лет")

Примеры конвертации строк:

print(int("123"))      # Output: 123
print(int("0"))        # Output: 0  
print(int("-456"))     # Output: -456
print(int("+789"))     # Output: 789

Работа с числами с плавающей точкой

При преобразовании float в int важно помнить: функция int() просто отбрасывает дробную часть, не округляя:

print(int(9.9))        # Output: 9 (не 10!)
print(int(3.14))       # Output: 3
print(int(-2.8))       # Output: -2 (не -3!)
print(int(0.1))        # Output: 0

Это поведение иногда удивляет новичков. Если нужно округление, используйте функцию round():

print(int(round(9.9)))  # Output: 10
print(int(round(3.14))) # Output: 3

Конвертация целых чисел

Да, можно применить int() к уже целому числу — функция просто вернет то же значение:

print(int(123))        # Output: 123
Тип данныхПримерРезультат
Строка (число)int("42")42
Floatint(3.14)3
Intint(100)100
Строка (отрицательное)int("-15")-15

Конвертация с указанием системы счисления

Здесь int() показывает свою мощь! Параметр base позволяет работать с разными системами счисления. Особенно полезно при работе с низкоуровневым программированием или веб-разработкой.

Двоичная система (base=2)

print(int("1010", 2))   # Binary to decimal: 10
print(int("1111", 2))   # Binary to decimal: 15
print(int("100", 2))    # Binary to decimal: 4

Восьмеричная система (base=8)

print(int("17", 8))     # Octal to decimal: 15
print(int("777", 8))    # Octal to decimal: 511

Шестнадцатеричная система (base=16)

print(int("1A", 16))    # Hexadecimal to decimal: 26
print(int("FF", 16))    # Hexadecimal to decimal: 255
print(int("A0", 16))    # Hexadecimal to decimal: 160

Практический пример из веб-разработки — конвертация цвета:

# Цвет #FF5733 в RGB
red = int("FF", 16)    # 255
green = int("57", 16)  # 87  
blue = int("33", 16)   # 51
print(f"RGB({red}, {green}, {blue})")  # RGB(255, 87, 51)

Можно использовать любую систему счисления от 2 до 36:

print(int("Z", 36))     # Base 36: 35
print(int("10", 3))     # Base 3: 3

Обработка ошибок при использовании int()

Вот где многие новички "спотыкаются"! Не все строки можно превратить в числа. Когда я преподавал, то всегда говорил студентам: "Готовьтесь к ошибкам заранее".

Основные типы ошибок

ValueError — самая частая ошибка:

# Это вызовет ValueError
try:
    result = int("abc")
except ValueError:
    print("Нельзя преобразовать нечисловую строку в целое число")

try:
    result = int("12.5")  # Строка с точкой!
except ValueError:
    print("Строка содержит десятичную точку")

TypeError — неподходящий тип данных:

try:
    result = int([1, 2, 3])  # Список нельзя конвертировать
except TypeError:
    print("Нельзя преобразовать список в целое число")

Правильная обработка ошибок

Лучшая практика — всегда использовать try-except при работе с пользовательским вводом:

def safe_int_conversion(value):
    try:
        return int(value)
    except ValueError:
        print(f"'{value}' не является корректным числом")
        return None
    except TypeError:
        print(f"Тип {type(value)} нельзя преобразовать в int")
        return None

# Примеры использования
print(safe_int_conversion("123"))    # 123
print(safe_int_conversion("abc"))    # None
print(safe_int_conversion(12.5))     # 12

Еще один полезный подход — использование значения по умолчанию:

def get_age():
    age_input = input("Введите ваш возраст: ")
    try:
        return int(age_input)
    except ValueError:
        print("Некорректный ввод, используем возраст 18")
        return 18

Использование int() с пользовательскими объектами

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

Метод __int__()

class Person:
    def __init__(self, age):
        self.age = age
    
    def __int__(self):
        return self.age

person = Person(25)
print(int(person))  # Output: 25

Метод __index__()

Этот метод используется для объектов, которые могут использоваться как индексы:

class Counter:
    def __init__(self, value):
        self.value = value
    
    def __index__(self):
        return self.value

counter = Counter(5)
print(int(counter))  # Output: 5

# Можно использовать как индекс
my_list = [10, 20, 30, 40, 50, 60]
print(my_list[counter])  # Output: 60 (элемент с индексом 5)

Практический пример — класс для работы с оценками:

class Grade:
    def __init__(self, score):
        self.score = max(0, min(100, score))  # Ограничиваем от 0 до 100
    
    def __int__(self):
        return self.score
    
    def letter_grade(self):
        if self.score >= 90:
            return "A"
        elif self.score >= 80:
            return "B"
        elif self.score >= 70:
            return "C"
        else:
            return "F"

grade = Grade(87)
print(f"Численная оценка: {int(grade)}")  # 87
print(f"Буквенная оценка: {grade.letter_grade()}")  # B

Распространенные ошибки и лучшие практики

За годы преподавания я собрал целую коллекцию типичных ошибок. Вот самые частые:

Ошибка: Попытка конвертации нечисловой строки

# НЕПРАВИЛЬНО
user_input = "двадцать пять"
age = int(user_input)  # ValueError!

# ПРАВИЛЬНО
user_input = "двадцать пять"
try:
    age = int(user_input)
except ValueError:
    print("Пожалуйста, введите число цифрами")

Ошибка: Неправильное использование base

# НЕПРАВИЛЬНО - база 10 не подходит для двоичного числа
binary_string = "1010"
result = int(binary_string)  # Получим 1010, а не 10!

# ПРАВИЛЬНО
binary_string = "1010"
result = int(binary_string, 2)  # Получим 10

Ошибка: Забыли про усечение при конвертации float

# Может быть неожиданным поведением
price = 99.99
discount_percent = int(price)  # Получим 99, а не 100!

# Если нужно округление
price = 99.99
discount_percent = int(round(price))  # Получим 100

Лучшие практики

1. Всегда проверяйте входные данные:

def safe_int_input(prompt):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("Пожалуйста, введите корректное число")

2. Используйте значения по умолчанию:

def get_config_value(config_string, default=0):
    try:
        return int(config_string)
    except (ValueError, TypeError):
        return default

3. Документируйте ожидаемые типы:

def calculate_discount(age: str) -> int:
    """
    Вычисляет размер скидки по возрасту.
    
    Args:
        age: Возраст в виде строки
        
    Returns:
        Размер скидки в процентах
        
    Raises:
        ValueError: Если age не может быть преобразован в число
    """
    age_int = int(age)
    if age_int >= 65:
        return 20
    elif age_int >= 18:
        return 10
    else:
        return 0

Заключение

Функция int() в Python — это просто находка для работы с числами! Серьёзно, она умеет превращать в целые числа всё подряд: строки, дробные числа, и даже те объекты, которые вы сами написали. Когда я только начинал программировать, постоянно спотыкался на этих преобразованиях типов. А сейчас понимаю — стоило просто разобраться с int() как следует, и половины проблем можно было избежать.

Самое главное, что я усвоил за годы работы: всегда-всегда проверяйте возможные ошибки! Особенно когда имеете дело с тем, что пользователь вводит с клавиатуры. Люди ведь могут написать что угодно, правда? И ещё — не проходите мимо параметра base. Эта штука творит чудеса, когда работаешь с двоичными, восьмеричными и прочими системами счисления.

Мой совет: возьмите все примеры из этой статьи и прогоните их у себя в редакторе. Поэкспериментируйте, поломайте что-нибудь специально — так лучше запоминается. А задачки, которые я предложил, обязательно порешайте. Не просто прочитайте — именно решите!

Кстати, если вы только начинаете своё путешествие в Python или хотите подтянуть пробелы, загляните в интерактивный курс Python от JavaRush. Там function int() разбирается не через скучную теорию, а через живые задачи с мгновенной проверкой. Я сам когда-то учил друзей именно так — никакой воды, только практика.

А тем, кто уже определился и хочет дойти до уровня Middle-разработчика, точно стоит посмотреть на Python-университет. Там уже серьёзная история: менторы из индустрии, настоящие проекты для портфолио, и главное — поддержка на всём пути обучения.

Удачи в изучении Python! Помните: каждая функция важна, но int() — одна из самых полезных в повседневной работе программиста.