Как преобразовать строку Python в int
Оглавление
- Представление целых чисел в Python
- Преобразование строки Python в int
- Преобразование Python int в строку
- Заключение
Целые числа являются целыми числами. Другими словами, они не имеют дробной составляющей. Для хранения целых чисел в Python можно использовать два типа данных: int и str. Эти типы обеспечивают гибкость при работе с целыми числами в различных условиях. В этом руководстве вы узнаете, как преобразовать строку Python в int. Вы также узнаете, как преобразовать int в строку.
К концу этого урока вы поймете:
- Как хранить целые числа, используя
strиint - Как преобразовать строку Python в
int - Как преобразовать строку Python
intв строку
Давайте начнем!
Представление целых чисел в Python
Целое число может быть сохранено с использованием различных типов. Два возможных типа данных Python для представления целого числа:
Например, вы можете представить целое число с помощью строкового литерала:
>>> 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():
- Синтаксическая ошибка: A
ValueErrorвозникает, когдаint()не знает, как разобрать строку, используя предоставленную базу (по умолчанию 10). - Логическая ошибка:
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()!