Как преобразовать в int python
В операциях с данными могут применяться значения различных типов. Например, складываются число типа int и число типа float :
a = 2 # число int b = 2.5 # число float c = a + b print(c) # 4.5
В данном случае никакой ошибки не будет. Однако Python не всегда может автоматически производить операции, в которых участвуют данные разных типов. Рассмотрим, какие в данном случае действуют правила.
Неявные преобразования
Оба числа в арифметических операциях должны представлять один и тот же тип. Если же два операнда операции представляют разные типы данных, то Python пытается автоматически выполнить преобразования к одному из типов в соответствии со следующми правилами:
- Если один из операндов операции представляет комплексное число (тип complex ), то другой операнд также преобразуется к типу complex.
- Иначе, если один из операндов представляет тип float , то второй операнд также преобразуется к типу float. Собственно так и произошло в примере выше, где значение переменной a было преобразовано в тип float
- Иначе, оба операнда должны представлять тип int , и в этом случае преобазование не требуется
Явные преобразования
Но в некоторых случаях возникает необходимость вручную выполнить преобразование типов. Например, пусть у нас будет следующий код:
a = "2" b = 3 c = a + b
Мы ожидаем, что «2» + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И мы увидим при выполнении кода что-то наподобие:
Traceback (most recent call last): File "/Users/eugene/PycharmProjects/HelloApp/main.py", line 3, in c = a + b TypeError: can only concatenate str (not "int") to str
Для преобразования типов Python предоставляет ряд встроенных функций:
- int() : преобразует значение в целое число
- float() : преобразует значение в число с плавающей точкой
- str() : преобразует значение в строку
int
Так, в предыдущем примере преобазуем строку в число с помощью функции int():
a = "2" b = 3 c = int(a) + b print(c) # 5
Примеры преобразований с помощью int() :
a = int(15) # a = 15 b = int(3.7) # b = 3 c = int("4") # c = 4 e = int(False) # e = 0 f = int(True) # f = 1
Однако если значение не может быть преобразовано, то функция int выдаст ошибку ValueError: invalid literal for int() with base 10 :
b = int("a1c") # Ошибка c = int("4.7") # Ошибка
float
Аналогичным образом действует функция float() , которая преобразует в число с плавающей точкой.
a = "2.7" b = 3 c = float(a) + b print(c) # 5.7
Примеры преобразований с помощью float() :
a = float(15) # a = 15.0 b = float(3.7) # b = 3.7 c = float("4.7") # c = 4.7 d = float("5") # d = 5.0 e = float(False) # e = 0.0 f = float(True) # f = 1.0
Но опять же не все значения могут автоматически преобразованы в float. Так, в следующем случае Python сгенерирует ошибку:
d = float("abc") # Ошибка
str
Функция str() преобразует значение в строку:
a = str(False) # a = "False" b = str(True) # b = "True" c = str(5) # c = "5" d = str(5.7) # d = "5.7"
Функция str() может быть актуальна, например, при добавлении к строке значения другого типа. Например, в следующем случае мы получим ошибку:
age = 22 message = "Age: " + age # Ошибка print(message)
Если число складывается с число, то это стандартная операция сложения чисел. Если строка складывается со строкой, то это операция объединения строк. Но каким образом выполнить операцию сложения по отношение к строке и числу, Python не знает. И если мы в данном случае мы хотим выполнить операцию объединения строк, то число можно привести к строке с помощью функции str() :
age = 22 message = "Age: " + str(age) # Age: 22 print(message)
Приведение string к int
Метод int() позволяет конвертировать строку в целое число.
Функция int() принимает два параметра. Первый — строка, которую нужно преобразовать в число. Второй — система счисления, в которой число должно быть представлено. Второй параметр не обязателен.
Метод возвращает значение, переданное в функцию int() , в виде целого числа. Синтаксис метода int() выглядит так:
int(number, base=base)
Пример работы с методом int() . Здесь мы приводим строку к числу:
print(int("12"))
Возвращает наша программа следующее:
Примеры преобразования строк в целые числа
Рассмотрим более детальные примеры использования метода int() . Допустим, мы создаем анкету для участия в детской игре. В ней нам нужно указать возраст пользователя. Хранить значение в нашей базе данных мы должны в виде целого числа. Но после того, как пользователь вводит значение в нашей программе, возраст конвертируется в строку.
Напишем программу, которая выполняет эту функцию. Начнем мы с метода input() — с помощью него получим возраст пользователя:
raw_user_age = input("Сколько вам лет?") print(raw_user_age)
Когда пользователь введет число, оно выводится в консоли. Вот что происходит, когда мы запускаем нашу программу:
Сколько вам лет? 12 12
Значение, которое ввел пользователь — 12. Выглядит как число… Но если мы используем метод type() для проверки типа данных возраста, то удивимся — это не число. Чтобы проверить тип данных введенного значения, нужно написать следующее:
print(type(raw_user_age))
Как видите, наши данные хранятся в виде строки. Очевидно, что мы должны конвертировать наши данные в целое число. Сделать это можно так:
raw_user_age = input("Сколько вам лет?") user_age = int(raw_user_age) print(user_age)
Вот что происходит, когда мы запускаем программу и вводим значение 12:
Сколько вам лет? 12 12
Возвращает наша программа то же самое, что и раньше. Но теперь 12 хранится в виде целого числа. Используем метод type() , чтобы это проверить:
print(type(user_age))
Теперь программа работает так, как нам было нужно.
Как преобразовать строку в int в Python – 3 способа
В этом руководстве мы изучим способы преобразования строки в целое число в Python.
Давайте посмотрим на пример, прежде чем продолжить:
a='Learning Python is fun' b= 20 #Displaying the type of a and b print(type(a)) print(type(b))
В приведенном выше примере мы объявили переменные ‘a’ и ‘b’ со строковым и целочисленным значением соответственно.
Мы можем проверить их типы данных с помощью type().
Здесь возникает вопрос, зачем нам преобразовывать строку в целое число.
Следующая программа иллюстрирует то же самое:
value_a = "100" value_b = "26" res = value_a * value_b print("The multiplication of val_a and val_b gives: ",res)
res = value_a * value_b TypeError: can't multiply sequence by non-int of type 'str'
Поскольку сгенерировалась ошибка, это причина того, что мы должны преобразовать строковые значения в целые числа, чтобы мы могли продолжить операцию.
Пришло время взглянуть на первую программу, демонстрирующую преобразование строки в целое число.
a = '7' print(type(a)) #using int() conv_a=int(a) print(type(conv_a)) conv_a = conv_a+10 print(conv_a) print(type(conv_a))
- Первый шаг – объявить переменную a со строковым значением.
- После этого мы проверили ее тип данных с помощью type().
- Для преобразования строки в целое число мы использовали int(), а затем проверили ее тип.
- Теперь мы поработали с переменной «а», добавив к ней 10.
- Наконец, на выходе отображается результирующее значение.
В следующем примере мы применим косвенный подход к преобразованию строки в целое число.
Следующая программа показывает, как это можно сделать:
value_a = "100" value_b = "26" print(type(value_a)) print(type(value_b)) #converting to float value_a=float(value_a) #converting to int value_b=int(value_b) res_sum=value_a+value_b print("The sum of value_a and value_b is ",res_sum)
The sum of value_a and value_b is 126.0
- Первый шаг – объявить две переменные value_a и value_b со строковым значением.
- После этого проверили их тип данных с помощью type().
- Для преобразования строки в целое число мы использовали float() для преобразования строки в значение с плавающей запятой.
- На следующем шаге преобразуем строковое значение value_b в целое число.
- Теперь мы сложили value_a и value_b и распечатали их сумму.
- Наконец, на выходе отображается результирующее значение.
Здесь мы увидим, как мы можем преобразовать число, представленное в виде строкового значения, в основание 10, когда оно находится на разных основаниях.
num_value = '234' # printing the value of num_value print('The value of num_value is :', num_value) #converting 234 to base 10 assuming it is in base 10 print('The value of num_value from base 10 to base 10 is:', int(num_value)) #converting 234 to base 10 assuming it is in base 8 print('The value of num_value from base 8 to base 10 is :', int(num_value, base=8)) #converting 234 to base 10 assuming it is in base 6 print('The value of num_value base 6 to base 10 is :', int(num_value, base=6))
The value of num_value is: 234 The value of num_value from base 10 to base 10 is: 234 The value of num_value from base 8 to base 10 is: 156 The value of num_value base 6 to base 10 is: 94
- На первом этапе мы объявили значение переменной.
- Поскольку вывод всегда будет в базе 10, мы предоставили различные базовые значения внутри int().
- В качестве базовых значений мы взяли 10, 8 и 6.
- При выполнении программы отображается ожидаемый результат.
Вывод
В этом руководстве мы узнали о различных способах преобразования строки в значение типа int.
Преобразование типов#
В Python есть несколько полезных встроенных функций, которые позволяют преобразовать данные из одного типа в другой.
int #
int преобразует строку в int:
In [1]: int("10") Out[1]: 10
С помощью функции int можно преобразовать и число в двоичной записи в десятичную (двоичная запись должна быть в виде строки)
In [2]: int("11111111", 2) Out[2]: 255
bin #
Преобразовать десятичное число в двоичный формат можно с помощью bin :
In [3]: bin(10) Out[3]: '0b1010' In [4]: bin(255) Out[4]: '0b11111111'
hex #
Аналогичная функция есть и для преобразования в шестнадцатеричный формат:
In [5]: hex(10) Out[5]: '0xa' In [6]: hex(255) Out[6]: '0xff'
list #
Функция list преобразует аргумент в список:
In [7]: list("string") Out[7]: ['s', 't', 'r', 'i', 'n', 'g'] In [8]: list(1, 2, 3>) Out[8]: [1, 2, 3] In [9]: list((1, 2, 3, 4)) Out[9]: [1, 2, 3, 4]
set #
Функция set преобразует аргумент в множество:
In [10]: set([1, 2, 3, 3, 4, 4, 4, 4]) Out[10]: 1, 2, 3, 4> In [11]: set((1, 2, 3, 3, 4, 4, 4, 4)) Out[11]: 1, 2, 3, 4> In [12]: set("string string") Out[12]: ' ', 'g', 'i', 'n', 'r', 's', 't'>
Эта функция очень полезна, когда нужно получить уникальные элементы в последовательности.
tuple #
Функция tuple преобразует аргумент в кортеж:
In [13]: tuple([1, 2, 3, 4]) Out[13]: (1, 2, 3, 4) In [14]: tuple(1, 2, 3, 4>) Out[14]: (1, 2, 3, 4) In [15]: tuple("string") Out[15]: ('s', 't', 'r', 'i', 'n', 'g')
Это может пригодиться в том случае, если нужно получить неизменяемый объект.
str #
Функция str преобразует аргумент в строку:
In [16]: str(10) Out[16]: '10'