- Как преобразовать строку в число в Python
- Оглавление
- Конвертируем строку в целое число
- Конвертируем строку в число с плавающей точкой
- Преобразование строки в двоичный, восьмеричный и шестнадцатеричный формат чисел
- Преобразование строки в экспоненциальном представлении в число
- Преобразование строки в число в Python. Особенности преобразования числа в строку
- Преобразование строки в целое число с помощью int() в Python
- Преобразуем десятичную строку в число с плавающей точкой в Python
- Преобразуем список строковых чисел в список целых чисел в Python
- Преобразуем список строк в список чисел с плавающей точкой в Python
- Преобразование строки с запятыми в число в Python
- Преобразование строки в число при расчёте високосного года в Python
- Как преобразовать целое число в строку в Python?
- Сделать строку числом python
- Преобразование строки Python в int
- Преобразование Python int в строку
- Заключение
Как преобразовать строку в число в Python
В Python вы можете преобразовать строку в целое число или в число с плавающей точкой (т.е. значение типа str в значение типа int или float) при помощи встроенных функций int() и float() .
Оглавление
Конвертируем строку в целое число
Функция int() преобразует строки в целочисленный тип данных (int).
print(int(‘100’)) print(type(int(‘100’))) # Результат: # 100 #
При этом применение int() к строке, содержащей точку или запятую, вызывает ошибку:
print(int('1.23')) # ValueError: invalid literal for int() with base 10: '1.23' print(int('10,000')) # ValueError: invalid literal for int() with base 10: '10,000'
Примечание редакции: об ошибках можно почитать в статье “Ошибки и исключения в Python”.
Строку, разделенную запятыми, можно преобразовать, удалив запятые при помощи функции replace() . Ненужный символ заменяется пустой строкой ( ‘ ‘ ).
print(int('10,000'.replace(',', ''))) # Результат: # 10000
Обратное преобразование делается при помощи функции str() . Почитать можно в статье “Как преобразовать целое число в строку”.
Конвертируем строку в число с плавающей точкой
Функция float() преобразует значение строкового типа в число с плавающей точкой (тип float).
print(float(‘1.23’)) print(type(float(‘1.23’))) # Результат: # 1.23 #
Также можно преобразовывать строки, в которых нет целой части числа:
print(float('.23')) # Результат: # 0.23
Строка, представляющая собой целое число, также преобразуется в число с плавающей точкой (тип float):
print(float(‘100’)) print(type(float(‘100’))) # Результат: # 100.0 #
Преобразование строки в двоичный, восьмеричный и шестнадцатеричный формат чисел
Если во второй аргумент функции int() передать базу целого числа, то можно на выходе получить число в заданной системе счисления.
print(int('100', 2)) print(int('100', 8)) print(int('100', 16)) # Результат: # 4 # 64 # 256
По умолчанию второй аргумент равен 10. То есть строка преобразуется в число в десятичной системе счисления:
print(int('100', 10)) print(int('100')) # Результат: # 100 # 100
А если второй аргумент равен 0, то преобразование происходит на основании префикса строки ( 0b , 0o , 0x or 0B , 0O , 0X ):
print(int('0b100', 0)) print(int('0o100', 0)) print(int('0x100', 0)) # Результат: # 4 # 64 # 256
Префиксы и строки, которые преобразуются в шестнадцатеричный формат, могут быть написаны как в верхнем, так и в нижнем регистре:
print(int('FF', 16)) print(int('ff', 16)) # Результат: # 255 # 255 print(int('0xFF', 0)) print(int('0XFF', 0)) print(int('0xff', 0)) print(int('0Xff', 0)) # Результат: # 255 # 255 # 255 # 255
Преобразование строки в экспоненциальном представлении в число
Cтрока в экспоненциальной нотации может быть преобразована в число с плавающей точкой при помощи функции float() .
print(float(‘1.23e-4’)) print(type(float(‘1.23e-4’))) # Результат: # 0.000123 # print(float(‘1.23e4’)) print(type(float(‘1.23e4’))) # Результат: # 12300.0 #
Символ e может быть как в нижнем ( e ), так и в верхнем ( E ) регистре.
print(float('1.23E-4')) # Результат: # 0.000123
Преобразование строки в число в Python. Особенности преобразования числа в строку
Иногда нам нужно выполнить преобразование строки в целое число либо в число с плавающей точкой. Потребность в этом возникает для осуществления ряда операций. Как это сделать в Python, мы сейчас и поговорим.
Чтобы осуществить преобразование строки в целое число либо число с плавающей точкой, в Python используют функции int и float. Если вы захотите выполнить преобразование без применения данных функций, то получите ошибку. Например, к ошибке приведёт следующий код:
str_a = ’50’ b = 10 c = str_a + b print (c)Преобразование строки в целое число с помощью int() в Python
Давайте посмотрим на следующий участок кода:
str_a = '50' b = 10 c = int(str_a) + b print ("The value of c = ",c)С его помощью мы выведем значение переменной «c», которое будет представлять собой сумму переменных «str_a» и «b».
Преобразуем десятичную строку в число с плавающей точкой в Python
Для преобразования строки в число с плавающей точкой мы можем использовать float:
#Преобразование string во float str_a = '50.85' b = 10.33 c = float(str_a) + b print ("The value of c = ",c)
Однако учтите, что если вы захотите задействовать тут функцию int() , это приведёт к ошибке.
Преобразуем список строковых чисел в список целых чисел в Python
Бывает, что в Python необходимо выполнить преобразование строки из чисел, содержащихся в списке. В таких случаях нам поможет генератор списков. Таким образом создаётся новый список, где можно использовать функцию int() в каждой итерации:
#Преобразование string в int в списке str_lst = ['1', '2', '3'] int_lst = [int(x) for x in str_lst] print (int_lst)
Мы выведем новый список, который будет состоять из целых чисел, полученных из строк.
Преобразуем список строк в список чисел с плавающей точкой в Python
Аналогично можно применять float вместо int для выполнения преобразования списка, включающего в себя строки из целых чисел:
#Преобразование string во float в списке str_lst = ['10.505', '2.3', '3.99'] float_lst = [float(x) for x in str_lst] print (float_lst)
Преобразование строки с запятыми в число в Python
Что делать, если у нас строка наподобие «1,000,000»? Если мы попробуем выполнить её преобразование с помощью функций int() либо float() , мы получим ошибку.
Одно из решений — применение import locale:
locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’ )Приём работает, но он не идеален. Другое решение — заменить запятые на пустые строки, а потом применить уже известную нам функцию int:
str_a = '5,123,000' int_b = int(str_a.replace(',','')) print ("The integer value",int_b)Результат — целое значение. Это же решение мы можем использовать и для преобразования строки в число с плавающей точкой в Python.
Преобразование строки в число при расчёте високосного года в Python
Как известно, пользовательский ввод в «Пайтоне» воспринимается как строка. К примеру, в следующем коде программа попросит пользователя ввести год, а после ввода значений программа сообщит, является ли этот год високосным. При этом введённое значение сначала будет преобразовано в целое число, а потом будет задействована формула расчёта високосного года:
#Расчёт високосного года try: Y = int(input("Enter a Year? ")) exceptValueError: print ("You may only enter digits in '2000' format!") else: leap_or_not = Y%4 == 0 ifleap_or_not: print ("Leap year") else: print ("Not a leap year")
Таким образом происходит преобразование вводимой строки в целое число, а потом это число применяется для расчёта.
Как преобразовать целое число в строку в Python?
При выполнении преобразования целых чисел в строки используется функция str() . Она принимает объект, который может иметь тип int, float, double и так далее.
Давайте посмотрим на пример преобразования переменной int в строку, которая потом применяется как строка для конкатенации:
#Преобразование int в string a_string = "str function for int to string" a_num = 456 print (a_string + str(a_num))
Результат будет следующим:
str function for int to string456Кстати, если бы целочисленная переменная была нами использована без str() , результатом стала бы ошибка TypeError.
Сделать строку числом python
Здесь Python понимает, что вы хотите сохранить целое число 110 в виде строки или используете целочисленный тип данных:
Важно учитывать, что конкретно подразумевается под "110" и 110 в приведённых выше примерах. Для человека, который использовал десятичную систему счисления всю жизнь очевидно, что речь идёт о числе сто десять. Однако другие системы счисления, такие, как двоичная и шестнадцатеричная, используют иные основания для представления целого числа.
Например, вы представляете число сто десять в двоичном и шестнадцатеричном виде как 1101110 и 6e соответственно.
А также записываете целые числа в других системах счисления в Python с помощью типов данных str и int:
>>> binary = 0b1010 >>> hexadecimal = "0xa"
Обратите внимание, что binary и hexadecimal используют префиксы для идентификации системы счисления. Все целочисленные префиксы имеют вид 0? , где ? заменяется символом, который относится к системе счисления:
- b: двоичная (основание 2);
- o: восьмеричная (основание 8);
- d: десятичная (основание 10);
- x: шестнадцатеричная (основание 16).
Техническая подробность: префикс не требуется ни в int , ни в строковом представлении, когда он определён логически.
int предполагает, что целочисленный литерал – десятичный:
>>> decimal = 303 >>> hexadecimal_with_prefix = 0x12F >>> hexadecimal_no_prefix = 12F File "", 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() предполагает, что строковый аргумент представляет собой десятичное целое число. Однако если вы передадите шестнадцатеричную строку в int() , то увидите ValueError :
>>> int("0x12F") Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '0x12F'
Сообщение об ошибке говорит, что строка – недопустимое десятичное целое число.
Важно понимать разницу между двумя типами неудачных результатов при передаче строки в int() :
- Синтаксическая ошибка 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 "", line 1, in ValueError: invalid literal for int() with base 10: '0b11010010'
Здесь получаете ValueError , потому что int() не способен интерпретировать двоичную строку как десятичное целое число.
Когда передаёте строку int() , указывайте систему счисления, которую используете для представления целого числа. Чтобы задать систему счисления применяется base :
Теперь int() понимает, что вы передаёте шестнадцатеричную строку и ожидаете десятичное целое число.
Техническая подробность: аргумент base не ограничивается 2, 8, 10 и 16:
Отлично! Теперь, когда тонкости преобразования строки Python в int освоены, вы научитесь выполнять обратную операцию.
Преобразование Python int в строку
Для преобразования int в строку Python разработчик использует str() :
По умолчанию str() ведёт себя, как int() : приводит результат к десятичному представлению:
В этом примере str() блеснул "умом": интерпретировал двоичный литерал и преобразовал его в десятичную строку.
Если вы хотите, чтобы строка представляла целое число в другой системе счисления, то используйте форматированную строку (f-строку в Python 3.6+) и параметр, который задаёт основание:
>>> octal = 0o1073 >>> f"" # Decimal '571' >>> f"" # Hexadecimal '23b' >>> f"" # Binary '1000111011'
str – гибкий способ представления целого числа в различных системах счисления.
Заключение
Поздравляем! Вы достаточно много узнали о целых числах и о том, как представлять и преобразовывать их с помощью типов данных Python.
- Как использовать str и int для хранения целых чисел.
- Как указать явную систему счисления для целочисленного представления.
- Как преобразовать строку Python в int .
- Как преобразовать Python int в строку.
Теперь, когда вы усвоили материал о str и int , читайте больше о представлении числовых типов с использованием float(), hex(), oct() и bin()!