Как преобразовать строку в float или int?
Как можно преобразовать строку (str
) в число с плавающей запятой (float
)?
"545.2222" -> 545.2222
Или же как преобразовать строку (str
) в целое число (int
)?
"31" -> 31
Для обратного преобразования смотрите Как преобразовать целое число в строку в Python и Преобразование числа с плавающей точкой в строку без округления.
Пожалуйста, вместо этого используйте Как можно считывать вводы как числа?, чтобы закрыть дублирующие вопросы, где пользователь получил строку от пользовательского ввода и немедленно хочет ее преобразовать, или надеялся на то, что input
(в версии 3.x) преобразует тип автоматически.
3 ответ(ов)
Функция num(s)
принимает строку s
и пытается преобразовать её в целое число. Если это не удаётся (например, если строка содержит нецелочисловое значение), она вызывает исключение ValueError
, и в этом случае производится попытка преобразовать строку в число с плавающей запятой (тип float
).
Вот как работает функция:
def num(s):
try:
return int(s) # Пытаемся преобразовать строку в целое число
except ValueError: # Если возникает ошибка (строка не является целым числом)
return float(s) # Пытаемся преобразовать её в число с плавающей запятой
Таким образом, если строка представляет собой целое число, функция вернёт его в виде int
. Если строка содержит дробное число или нечисловые символы, функция вернёт значение в формате float
. Это полезный способ обработки входных данных, когда тип данных может быть не определён заранее.
Надеюсь, это поможет! Если у вас есть дополнительные вопросы, не стесняйтесь обращаться.
В данном коде используется тернарный оператор для преобразования строки x
в число. Если в строке присутствует символ '.'
, то строка будет преобразована в число с плавающей запятой (тип float
), иначе — в целое число (тип int
).
Вот перевод этой конструкции на русский:
float(x) if '.' in x else int(x)
Эта строка проверяет, есть ли в строке x
десятичная точка. Если да, то она преобразует строку в число с плавающей точкой, иначе — в целое число.
Пользователи codelogic и harley правы, но учтите, что если вы знаете, что строка является целым числом (например, "545"), вы можете просто вызвать int("545")
, не сначала преобразовывая в float
.
Если ваши строки находятся в списке, вы также можете использовать функцию map
.
>>> x = ["545.0", "545.6", "999.2"]
>>> list(map(float, x))
[545.0, 545.60000000000002, 999.20000000000005]
>>>
Это будет работать хорошо, только если все элементы одного и того же типа.
Как преобразовать строку в int в Java?
Изменение типа столбца в pandas
Почему Python не может разобрать эти данные JSON? [закрыто]
Преобразование строки, представляющей словарь, в сам словарь
Как использовать десятичное значение шага в range()?