Сделать строку числом python

Содержание
  1. Как преобразовать строку в число в Python
  2. Оглавление
  3. Конвертируем строку в целое число
  4. Конвертируем строку в число с плавающей точкой
  5. Преобразование строки в двоичный, восьмеричный и шестнадцатеричный формат чисел
  6. Преобразование строки в экспоненциальном представлении в число
  7. Преобразование строки в число в Python. Особенности преобразования числа в строку
  8. Преобразование строки в целое число с помощью int() в Python
  9. Преобразуем десятичную строку в число с плавающей точкой в Python
  10. Преобразуем список строковых чисел в список целых чисел в Python
  11. Преобразуем список строк в список чисел с плавающей точкой в Python
  12. Преобразование строки с запятыми в число в Python
  13. Преобразование строки в число при расчёте високосного года в Python
  14. Как преобразовать целое число в строку в Python?
  15. Сделать строку числом python
  16. Преобразование строки Python в int
  17. Преобразование Python int в строку
  18. Заключение

Как преобразовать строку в число в 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() .

Читайте также:  Как firefox html document

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_Deep_21.1-5020-77b56f.png

Иногда нам нужно выполнить преобразование строки в целое число либо в число с плавающей точкой. Потребность в этом возникает для осуществления ряда операций. Как это сделать в 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? , где ? заменяется символом, который относится к системе счисления:

  1. b: двоичная (основание 2);
  2. o: восьмеричная (основание 8);
  3. d: десятичная (основание 10);
  4. 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() :

  1. Синтаксическая ошибка 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 "", 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.

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

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

Источник

Оцените статью