Как преобразовать строку Python в int

Оглавление

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

К концу этого урока вы поймете:

  • Как хранить целые числа, используя str и int
  • Как преобразовать строку Python в int
  • Как преобразовать строку Python int в строку

Давайте начнем!

Представление целых чисел в Python

Целое число может быть сохранено с использованием различных типов. Два возможных типа данных Python для представления целого числа:

  1. str
  2. int

Например, вы можете представить целое число с помощью строкового литерала:

>>> s = "110"

Здесь Python понимает, что вы хотите сохранить целое число 110 в виде строки. Вы можете сделать то же самое с типом данных integer:

>>> i = 110

Важно учитывать, что конкретно вы подразумеваете под "110" и 110 в приведенных выше примерах. Как человеку, который всю свою жизнь пользовался десятичной системой счисления, может быть очевидно, что вы имеете в виду число сто десять. Однако существует несколько других систем счисления, таких как двоичная и шестнадцатеричная, которые используют разные основания для представления целого числа.

Например, вы можете представить число сто десять в двоичном и шестнадцатеричном виде в виде 1101110 и 6e соответственно.

Вы также можете представлять свои целые числа в других системах счисления в Python, используя типы данных str и int:

>>> binary = 0b1010
>>> hexadecimal = "0xa"

Обратите внимание, что binary и hexadecimal используют префиксы для обозначения системы счисления. Все префиксы целых чисел представлены в виде 0?, в котором вы заменяете ? символом, относящимся к системе счисления:

  • b: двоичный код (основание 2)
  • o: восьмеричный (основание 8)
  • d: десятичная дробь (основание 10)
  • x: шестнадцатеричный (базовый 16)

Технические подробности: Префикс не требуется ни в целочисленном, ни в строковом представлении, когда он может быть выведен.

int предполагается, что буквальное целое число равно десятичному разряду:

>>> decimal = 303
>>> hexadecimal_with_prefix = 0x12F
>>> hexadecimal_no_prefix = 12F
  File "<stdin>", line 1
    hexadecimal_no_prefix = 12F
                              ^
SyntaxError: invalid syntax

Строковое представление целого числа является более гибким, поскольку строка содержит произвольные текстовые данные:

>>> decimal = "303"
>>> hexadecimal_with_prefix = "0x12F"
>>> hexadecimal_no_prefix = "12F"

Каждая из этих строк представляет одно и то же целое число.

Теперь, когда у вас есть некоторые базовые знания о том, как представлять целые числа с помощью str и int, вы узнаете, как преобразовать строку Python в int.

Преобразование строки Python в int

Если у вас есть десятичное целое число, представленное в виде строки, и вы хотите преобразовать строку Python в int, то вы просто передаете строку в int(), которая возвращает десятичное целое число:

>>> int("10")
10
>>> type(int("10"))
<class 'int'>

По умолчанию int() предполагает, что строковый аргумент представляет собой десятичное целое число. Однако, если вы передадите шестнадцатеричную строку в int(), то увидите ValueError:

>>> int("0x12F")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '0x12F'

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

Примечание:

Важно понимать разницу между двумя типами неудачных результатов передачи строки в int():

  1. Синтаксическая ошибка: A ValueError возникает, когда int() не знает, как разобрать строку, используя предоставленную базу (по умолчанию 10).
  2. Логическая ошибка: int() действительно знает, как разобрать строку, но не так, как вы ожидали.

Вот пример логической ошибки:

>>> binary = "11010010"
>>> int(binary)  # Using the default base of 10, instead of 2
11010010

В этом примере вы хотели, чтобы результат был равен 210,, что является десятичным представлением двоичной строки. К сожалению, поскольку вы не указали такое поведение, int() предполагалось, что строка представляет собой десятичное целое число.

Одной из хороших мер предосторожности при таком поведении является постоянное определение ваших строковых представлений с использованием явных баз:

>>> int("0b11010010")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '0b11010010'

Здесь вы получаете ValueError, потому что int() не знает, как преобразовать двоичную строку в десятичное целое число.

Когда вы передаете строку в int(), вы можете указать систему счисления, которую вы используете для представления целого числа. Способ указать систему счисления - использовать base:

>>> int("0x12F", base=16)
303

Теперь int() понимает, что вы передаете шестнадцатеричную строку и ожидаете получить десятичное целое число.

Технические подробности: Аргумент, который вы передаете в base, не ограничивается цифрами 2, 8, 10 и 16:

>>> int("10", base=3)
3

Отлично! Теперь, когда вы освоились со всеми тонкостями преобразования строки Python в int, вы узнаете, как выполнить обратную операцию.

Преобразование Python int в строку

В Python вы можете преобразовать Python int в строку, используя str():

>>> str(10)
'10'
>>> type(str(10))
<class 'str'>

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

>>> str(0b11010010)
'210'

В этом примере str() достаточно умен, чтобы интерпретировать двоичный литерал и преобразовать его в десятичную строку.

Если вы хотите, чтобы строка представляла целое число в другой системе счисления, то вы используете форматированную строку, такую как f-строка (в Python 3.6+) и параметр, который определяет базу:

>>> octal = 0o1073
>>> f"{octal}"  # Decimal
'571'
>>> f"{octal:x}"  # Hexadecimal
'23b'
>>> f"{octal:b}"  # Binary
'1000111011'

str это гибкий способ представления целого числа в различных системах счисления.

Заключение

Поздравляем! Вы так много узнали о целых числах и о том, как представлять и преобразовывать их между строковыми типами данных Python и int.

В этом уроке вы узнали:

  • Как использовать str и int для хранения целых чисел
  • Как указать явную систему счисления для целочисленного представления
  • Как преобразовать строку Python в int
  • Как преобразовать Python int в строку

Теперь, когда вы так много знаете о str и int, вы можете узнать больше о представлении числовых типов с помощью float(), hex(), oct(), и bin()!

Back to Top