Содержание

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

Итак, давайте начнем!

Типы данных в Python

Python поддерживает много типов данных. Они нужны для определения, представления и обработки различных видов данных, которые существуют и используются в компьютерных программах.

Кроме того, с разными типами данных нам доступны разные операции: то, что вы можете сделать с данными одного типа, невозможно сделать с другими. Например, в Python есть строковые методы, которые используются исключительно для работы со строками. К примеру, .lowercase() и .uppercase() для приведения символов строки в нижний и верхний регистр. И таких примеров очень много. Фактически, подавляющее большинство методов подходят только для какого-то одного типа данных.

Одним из типов данных Python являются строки. Строки – это последовательности символов, которые используются для передачи текстовой информации.

Строки заключаются в одинарные или двойные кавычки. К примеру, это может выглядеть следующим образом:

fave_phrase = "Hello world!"
# Hello world! - это строка, заключенная в двойные кавычки

Инты или интеджеры (integers) – это целые числа. Они используются для представления числовых данных. Более того, при работе с целыми числами вы можете выполнять любые математические операции (например, сложение, вычитание, умножение или деление).

Кстати если вы ищете работу, то посмотрите свежие вакансии по Python

Целые числа не заключаются в одинарные или двойные кавычки. Они представляются просто в виде последовательности цифр:

fave_number = 7
# 7 имеет тип int, это целое число
# "7" было бы не int, а string, несмотря на то, что это цифра
# Все дело в кавычках

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

Бывает, данные хранятся или получаются от пользователя в неподходящем формате, т.е. тип этих данных не подходит для манипуляций, которые с ними нужно проделать.

Поскольку каждым типом данных можно управлять по-разному, это часто означает, что перед выполнением наших задач нам нужно преобразовать этот тип данных в более подходящий для конкретной задачи.

Преобразование одного типа данных в другой также называется приведением типа или преобразованием типа. Многие языки предлагают встроенные операторы приведения именно для этого – для явного преобразования одного типа в другой.

Давайте, наконец, посмотрим, как же это сделать.

Как преобразовать строку в число (int) в Python

Чтобы преобразовать строку в целое число, можно использовать встроенную функцию int().

Функция принимает в качестве параметра исходную строку, которую вы хотите преобразовать, и возвращает целочисленный эквивалент переданного вами значения.

Общий синтаксис выглядит примерно следующим образом: int("str").

Давайте рассмотрим следующий пример, где необходимое нам число представлено в виде строки:

# цифра 7 в строковом формате
print("7")
# проверяем тип данных при помощи метода type()
print(type("7"))
# Результат
# 7
# <class 'str'>

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

# конвертируем string в int
print(int("7"))
# проверяем тип данных при помощи метода type()
print(type(int("7")))
# Результат
#7
#<class 'int'>

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

Допустим, вам необходимо рассчитать возраст пользователя. Вы делаете это на основе полученной от него информации. Данный ввод всегда будет идти в строковом формате.

То есть, даже если пользователь вводит число, вы получите входящие данные строкового типа (<class 'str'>).

Если вы захотите выполнить математические операции с этим инпутом, например вычесть введённое значение из другого числа, вы получите сообщение об ошибке, потому что выполнять математические операции со строками нельзя.

Давайте разберем пример, чтобы увидеть, как это происходит в действии:

current_year = 2021 # просим пользователя ввести его год рождения user_birth_year_input = input("What year were you born? ") # вычитаем текущий год из года, введенного пользователем user_age = current_year - user_birth_year_input print(user_age) # Результат # What year were you born? 1993 # Traceback (most recent call last): # File "demo. py", line 9, in <module> # user_age = current_year - user_birth_year_input # TypeError: unsupported operand type(s) for -: 'int' and 'str'

Итак, мы просим пользователя ввести его год рождения, чтобы на основе этой информации узнать его возраст (вычесть введенный год из 2021). В данном примере, для упрощения задачи, мы не учитываем месяц и дату рождения. Здесь главное понять принцип.

Однако запустив наш код, мы получаем ошибку. В ней сказано, что вычитание не может выполняться между целым числом int и строкой.

Давайте проверим тип данных, введенных с помощью метода type():

current_year = 2021
# просим пользователя ввести его год рождения
user_birth_year_input = input("What year were you born? ")
print(type(user_birth_year_input))
# Результат
# What year were you born? 1993
# <class 'str'>

Действительно, переменная user_birth_year_input является строковой. Всё дело в том, что функция input(), которую мы используем для получения данных от пользователя, всегда возвращает данные строкового типа. Это важно помнить и преобразовывать введенные данные в подходящий для вашей задачи тип.

В нашем примере, чтобы избежать ошибок, нужно преобразовать вводимые пользователем данные в целое число и сохранить его в новой переменной. Сделать это можно следующим образом:

current_year = 2021
# просим пользователя ввести его год рождения
user_birth_year_input = input("What year were you born? ")
# конвертируем пользовательский input в int при помощи функции int() и сохраняем в новой переменной
user_birth_year = int(user_birth_year_input)
# вычитаем текущий год из введенного пользователем года
user_age = current_year - user_birth_year
print(user_age)
# Результат
# What year were you born? 1993
# 28

Как видите, код отработал корректно, и мы получили возраст пользователя.

Важно отметить, что функция int() выдаст вам ошибку, если исходная строка будет содержать какие-либо ещё символы помимо цифр. Например, если пользователь (по ошибке или специально) введет 19f8 в качестве года рождения, то вы получите ошибку. В таком случае важно прописывать так называемую «защиту от дурака». Это можно сделать с помощью конструкции try except, подробнее про это можно почитать в статье «Обрабатываем исключения в Python: try и except».

Заключение

Вот и все – теперь вы знаете, как преобразовать строку в число в Python! Мы разобрали такой встроенный метод как int(), как он работает и как его использовать для приведения строки к целому числу.

Спасибо за чтение! Надеемся, статья была вам полезна. Успехов в написании кода!

Перевод статьи «Python Convert String to Int – How to Cast a String in Python».

Преобразование строки в число (int, float) в Python

В Python вы можете преобразовать строку str в целое число int и число с плавающей запятой float с помощью int() и float () .

В этой статье описывается следующее содержимое.

  • Преобразование строки в int : int()
  • Преобразование строки в float : float()
  • Преобразование строки двоичного, восьмеричного и шестнадцатеричного представления в Интервал
  • Преобразование строки экспоненциального представления в число с плавающей запятой

Используйте str() для преобразования целого числа или числа с плавающей запятой в строку.

  • Встроенные функции — str() — Документация по Python 3.9.0

Если вы хотите преобразовать формат строк или чисел, используйте функцию format() или метод format() str .

  • Форматирование строк и чисел с помощью format() в Python

Вы также можете преобразовать список строк в список чисел.

  • Преобразование списка строк и списка чисел друг в друга в Python

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

int : int()

int() преобразует строку в целое число int .

  • Встроенные функции — int() — Документация по Python 3.9.0
 печать (целое число ('100'))
печать (тип (целое ('100')))
№ 100
# <класс 'целое'>
 

источник: str_num_conversion.py

Строка, содержащая . или , вызывает ошибку.

 # print(int('1.23'))
# ValueError: неверный литерал для int() с основанием 10: '1.23'
# print(int('10,000'))
# ValueError: недействительный литерал для int() с основанием 10: '10,000'
 

источник: str_num_conversion.py

Строку, разделенную запятыми, можно преобразовать, удалив , с помощью replace() (замените пустой строкой '' ).

 print(int('10 000'.replace(',', '')))
# 10000
 

источник: str_num_conversion.py

См. следующую статью для replace() .

  • Замена строк в Python (replace, translate, re.sub, re.subn)

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

float : float()

float() преобразует строку в число с плавающей запятой float .

  • Встроенные функции — float() — Python 3.9.0 документация
 печать (с плавающей запятой ('1,23'))
печать (тип (с плавающей запятой ('1.23')))
# 1.23
# <класс 'плавающий'>
 

источник: str_num_conversion.py

Строка без целой части также может быть преобразована.

 печать (с плавающей запятой ('.23'))
# 0,23
 

источник: str_num_conversion.py

Строка, представляющая целое число, также преобразуется в число с плавающей запятой float .

 печать (с плавающей запятой ('100'))
печать (тип (с плавающей запятой ('100')))
# 100.0
# <класс 'плавающий'>
 

источник: str_num_conversion.py

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

int

восьмеричное и шестнадцатеричное.

 печать (целое число ('100', 2))
печать (целое ('100', 8))
печать (целое ('100', 16))
№ 4
№ 64
№ 256
 

источник: str_num_conversion.py

Если опущено, считается десятичным, как и в предыдущих примерах.

 печать (целое число ('100', 10))
печать (целое ('100'))
№ 100
№ 100
 

Источник: str_num_conversion.py

Если основа равен 0 , она преобразуется на основе префикса строки ( 0b , 0o , 0x или 0b , 0o , 0x или 00004, 0o , 0. ).

 печать (целое число ('0b100', 0))
печать (целое ('0o100', 0))
печать (целое ('0x100', 0))
№ 4
№ 64
№ 256
 

источник: str_num_conversion.py

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

 печать (целое число ('FF', 16))
печать (целое ('ff', 16))
№ 255
№ 255
печать (целое ('0xFF', 0))
печать (целое ('0XFF', 0))
печать (целое ('0xff', 0))
печать (целое ('0Xff', 0))
№ 255
№ 255
№ 255
№ 255
 

источник: str_num_conversion.py

Дополнительные сведения о взаимном преобразовании двоичных, восьмеричных и шестнадцатеричных строк и int см. в следующей статье.

  • Преобразование двоичных, восьмеричных, десятичных и шестнадцатеричных чисел в Python

Преобразовать строку экспоненциального представления в

float

Строку экспоненциального представления можно преобразовать в float с помощью float() .

 печать (с плавающей запятой ('1.23e-4'))
печать (тип (с плавающей запятой ('1.23e-4')))
# 0.000123
# <класс 'плавающий'>
печать (с плавающей запятой ('1.23e4'))
печать (тип (с плавающей запятой ('1.23e4')))
# 12300.0
# <класс 'плавающий'>
 

источник: str_num_conversion.py

Можно использовать как e , так и E .

 печать (с плавающей запятой ('1.23E-4'))
# 0.000123
 

источник: str_num_conversion.py

Преобразование строки в целое число в Python

Улучшить статью

Сохранить статью

  • Уровень сложности: Easy
  • Последнее обновление: 28 фев, 2023

  • Читать
  • Обсудить
  • Улучшить статью

    Сохранить статью

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

    1. Использование int() function

    Syntax: int(string)

    Example:  

    Python3

    num = '10'

     

    print ( Тип (num))

    Converted_num = Int (num)

    . 0004 type (converted_num))

     

    print (converted_num + 20 )

    Output

     
    <класс 'целое число'>
    30 

    В качестве примечания: для преобразования в число с плавающей запятой мы можем использовать float() в Python  

    Python3

    num 9004 100040013

     

    print ( type (num))

     

    converted_num = float (num)

     

    print ( type (converted_num))

     

    print (converted_num + 20. 5 )

    Output

     <класс 'ул'>
    <класс 'плавающий'>
    31.0 

    2. Использование функции float()

    Сначала мы преобразуем число с плавающей запятой, а затем преобразуем его в целое число. Obviously the above method is better (directly convert to integer)

    Syntax: float(string)

    Example:  

    Python3

    a = '2'

    б = '3'

     

    print ( type (a))

    print ( type (b))

     

    a = float (a)

     

    b = int (b)

     

    sum = a + b

     

    печать ( сумма )

    Вывод 8 <класс 'ул'> 5. 0

    3. converting python string to int using eval() function

    Python3

    a = "100"

    print ( eval ( а) + 12 )

    Output

     112 

    4. converting python string to float using eval() function

    Python3

    a = "100,00"

    Печать ( Eval (A) + 12 )

    . 0248

     112.0 

    5. Using ast.literal_eval

    Python3

    from ast import literal_eval

     

    int_value = literal_eval( "1234" )

    печать (int_value)

    печать ( тип

    3) 0_04003 (0_int_value) 00013

    Выход

     1234
     

    6. Использование str.isdigit ()

    Python3

    94444444444444444444444444444444444444444444444444444444444444444444444444444444444.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Строка = "42"