Как преобразовать строку в 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 в строку в C++?
Почему Python не может разобрать эти данные JSON? [закрыто]
Преобразование строки, представляющей словарь, в сам словарь
Преобразование всех строк в списке в целые числа