Oops! That page can’t be found.
It looks like nothing was found at this location. Maybe try one of the links below or a search?
Practice
- Top 100 Most Liked Data Structures and Algorithms Problems
- Top 50 Classic Data Structures Problems
- Top 25 Algorithms Every Programmer Should Know
Techie Delight 2023 All Rights Reserved.
This website uses cookies. By using this site, you agree to the use of cookies, our policies, copyright terms and other conditions. Read our Privacy Policy. Got it
Преобразование числа из строки в тип int и float
Python не позволит сложить строку и число, даже если строка выглядит как число, то есть содержит только цифры:
>>> '50' + 1 # TypeError: cannot concatenate ‘str’ and ‘int’ objects
В архитектуре языка оператор ‘+’ может означать как операцию сложения, так и операцию конкатенации, вследствие чего выбор типа преобразования становится неочевидным. Поэтому интерпретатор воспринимает такую инструкцию как ошибочную. В этом случае нужно использовать инструменты преобразования, чтобы можно было интерпретировать строку как число или наоборот.
Преобразование строковой версии числа в int или float .
- Преобразование строки в тип int ;
- Преобразование строки в тип float ;
- Преобразование списка строк в список чисел.
Преобразование строки в тип int .
# преобразование строки в число >>> num = '50' >>> if num.isdigit(): . int('50') # 50 >>> float('1.5') # 1.5 # преобразование числа в строку >>> str(50) # '50'
Функции int и float преобразует строку в число, функция str преобразует число в строковое представление. В Python нельзя смешивать строковые и числовые типы в таких операторах, как ‘+’ , но можно вручную выполнить необходимые преобразования перед выполнением.
Преобразование строки в тип float .
>>> x = '50' >>> y = 1 >>> z = '1.5' # Операция сложения >>> int(x) + y + float(z) # 52.5 # Операция конкатенации >>> x + str(y) + z # '5011.5' # Преобразование строки с записью вещественного # числа в число с плавающей точкой >>> text = '5.79E-10' >>> float(text) # 5.79e-10
Преобразование списка строк в список чисел.
Для преобразования списка строк с числами в список целых чисел можно ввести проверку перед преобразованием на то, что строка состоит только из десятичных чисел str.isdigit() .
>>> str_list = ['8.3', '11', 'девять', '1', '5', '3', '9', . 'пять', '15', '13', '7', '13.9', 'число'] >>> num_list = [] >>> for i in str_list: . if i.isdigit(): . num_list.append(int(i)) >>> num_list.sort() >>> num_list # [1, 3, 5, 7, 9, 11, 13, 15]
Для преобразования списка строк с числами включая десятичные c разделением их по типам, необходимо перед преобразованием в тип float проверять строку на вхождение точки ‘.’ .
>>> str_list = ['8.3', '11', 'девять.', '1', '5', '3', '9', . '.пять', '15', '13', '7', '13.9', 'число'] >>> def str_to_num(str): . if '.' in str and str.replace('.', '').isdigit(): . return float(str) . elif str.isdigit(): . return int(str) . >>> num_list = [] >>> for i in str_list: . n = str_to_num(i) . if n is not None: . num_list.append(str_to_num(i)) >>> num_list # [8.3, 11, 1, 5, 3, 9, 15, 13, 7, 13.9]
Для преобразования всех чисел в тип float , можно просто заменять точку в строке с числом и проверять получившуюся строку на десятичное число.
>>> str_list = ['8.3', '11', 'девять.', '1', '5', '3', '9', . '.пять', '15', '13', '7', '13.9', 'число'] >>> def is_num(str): . if str.replace('.', '').isdigit(): . return True . >>> num_list = [] >>> for i in str_list: . if is_num(i): . num_list.append(float(i)) . >>> num_list.sort() >>> num_list # [1.0, 3.0, 5.0, 7.0, 8.3, 9.0, 11.0, 13.0, 13.9, 15.0]
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Преобразование строки в число
- Строку в список, кортеж или множество символов
- Одинарные, двойные и тройные кавычки в строке Python
- Вывод специальных символов в строке Python «как есть»
- Объединение и повторение строк
- Индексирование строк
- Использование срезов строк
- Cрез строки Python от заданного символа/знака до конца строки
- Создание макета для печати базовыми методами строк
- Способы форматирования текстовых строк
- Подсчет повторений слов в тексте, деление строки на список слов
- Удаление слова из строки Python по фрагменту или шаблону
- Удаление пунктуации из строки
- Деление строки по заглавным буквам
- Создание отчетов и писем по шаблонам
Как преобразовать строку в число?
Для того чтобы преобразовать строку в число, можно использовать встроенные функции языка Python. Например, это можно сделать при помощи конструктора int() .
int ('1') == 1
Чтобы привести строку в формат числа с плавающей точкой, можно использовать функцию float() :
float(‘1’) == 1
По умолчанию все числа интерпретируются как десятичные. Это означает, что если вы попробуете выполнить преобразование подобным образом:
int(‘0x1’)
то получите сообщение об ошибке «ValueError». Связано это с тем, что функция int(string,base) принимает параметр base для преобразования строки в число, и процесс преобразования при этом выглядит примерно так:
int(‘0x1’,16) == 16
Если параметр base будет определяется как 0, то это показывает, что число будет восьмеричным, а если как 0x, то число будет шестнадцатеричным.
Также существует функция eval() , которая может быть использована для преобразования строки в число, но работает она немного медленнее и порождает множество проблем с безопасностью.
Дело в том, что эта функция выполняет строку с кодом и возвращает результат выполнения. Но если «скормить» ей опасные инструкции (скажем, в виде пользовательского input), она их выполнит. Например, если передать функции eval() строку os.system(‘rm -rf /’) (НЕ ПРИМЕНЯЙТЕ НА ПРАКТИКЕ!), это приведет к удалению всех данных компьютера.
Как преобразовать строку в число python
Чтобы привести строку к числу позволяет функция int() . Этой функции нужно передать строку, которую нужно преобразовать:
a = '12' int(a) # 12 # Убедимся, что функция вернула именно число type(int(a)) #
В Python есть также функция, которая позволяет реализовать обратную операцию, и получить строку из числа:
b = 23 str(b) # '23' type(str(b)) #