27

Как преобразовать строку в float или int?

60

Как можно преобразовать строку (str) в число с плавающей запятой (float)?

"545.2222" -> 545.2222

Или же как преобразовать строку (str) в целое число (int)?

"31" -> 31

Для обратного преобразования смотрите Как преобразовать целое число в строку в Python и Преобразование числа с плавающей точкой в строку без округления.

Пожалуйста, вместо этого используйте Как можно считывать вводы как числа?, чтобы закрыть дублирующие вопросы, где пользователь получил строку от пользовательского ввода и немедленно хочет ее преобразовать, или надеялся на то, что input (в версии 3.x) преобразует тип автоматически.

3 ответ(ов)

5

Функция num(s) принимает строку s и пытается преобразовать её в целое число. Если это не удаётся (например, если строка содержит нецелочисловое значение), она вызывает исключение ValueError, и в этом случае производится попытка преобразовать строку в число с плавающей запятой (тип float).

Вот как работает функция:

def num(s):
    try:
        return int(s)  # Пытаемся преобразовать строку в целое число
    except ValueError:  # Если возникает ошибка (строка не является целым числом)
        return float(s)  # Пытаемся преобразовать её в число с плавающей запятой

Таким образом, если строка представляет собой целое число, функция вернёт его в виде int. Если строка содержит дробное число или нечисловые символы, функция вернёт значение в формате float. Это полезный способ обработки входных данных, когда тип данных может быть не определён заранее.

Надеюсь, это поможет! Если у вас есть дополнительные вопросы, не стесняйтесь обращаться.

0

В данном коде используется тернарный оператор для преобразования строки x в число. Если в строке присутствует символ '.', то строка будет преобразована в число с плавающей запятой (тип float), иначе — в целое число (тип int).

Вот перевод этой конструкции на русский:

float(x) if '.' in x else int(x)

Эта строка проверяет, есть ли в строке x десятичная точка. Если да, то она преобразует строку в число с плавающей точкой, иначе — в целое число.

0

Пользователи codelogic и harley правы, но учтите, что если вы знаете, что строка является целым числом (например, "545"), вы можете просто вызвать int("545"), не сначала преобразовывая в float.

Если ваши строки находятся в списке, вы также можете использовать функцию map.

>>> x = ["545.0", "545.6", "999.2"]
>>> list(map(float, x))
[545.0, 545.60000000000002, 999.20000000000005]
>>>

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь