Перейти к содержимому

Python как строку преобразовать в функцию

  • автор:

Python. Средства преобразования строк и одиночных символов.

Средства преобразования строк и одиночных символов. Функции int() , str() , repr() , float() , ord() , chr()

Поиск на других ресурсах:

1. Функция int() . Преобразование в целое число

Функция int() есть конструктором класса int . Эта функция возвращает целочисленный объект, который может быть образован из:

  • целого числа или объекта;
  • числа или объекта с плавающей запятой;
  • строки символов или строчного объекта, содержащего последовательность цифр.

Функция может вызваться одним из двух способов:

  • int() – в этом случае функция возвращает значение 0;
  • int(x, base) – в этом случае обрабатывается объект x . Значение base определяет систему исчисления, в которую нужно конвертировать объект x . По умолчанию base = 10. Если явным образом задана система исчисления, то тип объекта x должен быть строчным, другие типы в этом случае запрещаются.

Пример.

# Функция int() # 1. Вызов без параметров a = int() # a = 0 # 2. Вызов с целочисленным значением a = int(15) # a = 15 # 3. Вызов с числом с плавающей запятой a = int(2.85) # a = 2 # 4. Вызов со строкой s = '28' a = int(s) # a = 28 # 5. Вызов с конвертированием в другую систему исчисления - только для строк # конвертировать 155 из 16-й системы в десятичную s = '155' a = int(s, 16) # a = 341, значение 155 в 16-й системе # конвертировать 111 из двоичной системы в десятичную s = '111' a = int(s, 2) # a = 7 # 6. Так нельзя # a = int(111,2) - ошибка, нельзя конвертировать число, должна быть строка
2. Функция str() . Преобразование в строку

Функция str() есть конструктором класса str . Функция возвращает объект в виде строки. Функция используется для конвертирования из одного типа (например числового) в строчный тип.

Функция имеет две реализации:

  • str() – без параметров. В этом случае функция возвращает пустую строку;
  • str(x) – с параметром x . Параметр x есть объектом некоторого типа. Данный вызов может также содержать еще два дополнительных параметра, которые определяют систему кодирования (по умолчанию система кодирования устанавливается utf-8) и схему обработки ошибок (по умолчанию установлена схема вызова исключения типа UnicodeError).

Результат функции str() может использоваться для вывода в функции print() .

Пример.

# Функция str() # 1. Вызов с целым числом x = 25 s = str(x) # s = '25' - строка символов # 2. Вызов с числом с плавающей запятой y = 2.338 s = str(y) # s = '2.338' # 3. Вызов со строкой s = str("3.778") # s = '3.778' # 4. Вызов со строкой, которая не отображает число s = str("abcdef") # s = 'abcdef' # 5. Вызов без параметров s = str() # s = ''
3. Функция repr() . Преобразование в строку как литерал

Функция repr() реализует преобразование в строку таким образом, если бы эта строка была литералом в программном коде.
Функция repr() может быть применена к:

  • целым числам;
  • числам с плавающей запятой;
  • строкам символов.

Пример 1. Конвертировать целое число в строку, которая представлена литералом.

# Функция repr() # конвертировать целое число в строку number = 25 snumber = repr(number) # snumber = '25' - как строка символов number = -100029 snumber = repr(number) # snumber = '-100029' - как строка символов

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

# Функция repr() # конвертировать число с плавающей запятой в строку number = 25.233 snumber = repr(number) # snumber = '25.233' snumber = repr(-1e-2) # snumber = '-0.01'

Пример 3. Конвертировать строку символов в другую строку так если бы она была литералом.

# Функция repr() # конвертировать строку в строку s1 = 'Text string' s2 = repr(s1) # s2 = "'Text string'" s1 = "Text string" s2 = repr(s1) # s2 = "'Text string'"

Пример 4. Конвертирование кортежа.

# Функция repr() - обработка кортежа x = ( 2.85, 15, 'Hello') str_x = repr(x) # str_x = "(2.85, 15, 'Hello')"
4. Какое отличие между функциями repr() и str() ?

В языке Python функции repr() и str() преобразуют произвольные объекты в их строчное представление.

Разница между функциями проявляется в том, как они конвертируют строку.
Функция repr() возвращает представление строчного объекта в виде строки программного кода, которую можно выполнить чтобы воссоздать этот объект. Иными словами, функция repr() возвращает строку в виде строки. При использовании такого объекта в функции print() будут выведены ограничивающие строку кавычки (строка во вложенных кавычках).
В свою очередь, функция str() используется для конвертирования строки в строку без ее преобразования в предшествующую форму. При использовании результата функции str() в функции print() будет выведена обычная строка в одинарных кавычках.

Например.

# Функции repr() и str() # конвертировать строку в строку s1 = 'Text string' # функция repr() s2 = repr(s1) # s2 = "'Text string'" # функция str() s3 = str(s1) # s3 = 'Text string'

Как видно из вышеприведенного кода, функция repr() возвращает строку как литерал

"'Text string'"

а функция str() возвращает обычную строку

'Text string'
5. Функция float() . Преобразование в число с плавающей запятой

Функция float() возвращает число с плавающей запятой, которое может быть образовано от другого числа или от строки. Функция может вызываться одним из двух способов:

  • float() – без параметра. В этом случае возвращается значение 0.0;
  • float(x) – где параметр x задает число или строку, которую нужно конвертировать.

В качестве входного параметра или исходного результата функция может использовать грамматические символы:

  • «Infinity» или «inf» – обозначают бесконечность. Бесконечность может быть отрицательной: «-Infinity» или «-inf» ;
  • «nan» – обозначает неопределенность.

Пример.

# Функция float() - возвращает число с плавающей запятой # 1. Результат получается из числа a = 25 # целое число x = float(a) # x = 25.0 b = 21.555e-2 # число с плавающей запятой x = float(b) # x = 0.21555 # 2. Результат получается из строки # s = 'abcdef' - ошибка, строка не имеет вида числа # x = float(s) # строка в экспоненциальном формате s = '-1.23e-2' x = float(s) # x = -0.0123 # строка в обычном формате s = "288.75" x = float(s) # x = 288.75 - как число # использование в выражении x = float(5.2)+float(3.8)*float(-2.1) # x = -2.7799999999999994 # использование со знаком + x = float('+2.34') # x = 2.34 # использование со словом "Infinity" или "inf" x = float("Infinity") # x = inf x = float('-inf') # x = -inf - с отрицательным знаком # использование со словом "nan" x = float("nan") # x = nan x = float() # x = 0.0
6. Функции ord() и chr() . Преобразование кодов символов

Функции ord() и chr() используются для одиночных символов. Эти функции являются инверсными друг к другу.
Функция chr() позволяет получать символ на основе его кода. Функция ord() позволяет получить код на основе представления символа.

Общая форма вызова функции chr() следующая

c = chr(i)

где c – символьное представление символа с Unicode-кодом i .

Общая форма вызова функции ord()

i = ord(c)

где i – код символа c .

Пример.

# Функции chr() и ord() # 1. Функция chr() code = 49 # код в десятичной системе исчисления symbol = chr(code) # symbol = '1' - цифра '1' code = 100 symbol = chr(code) # symbol = 'd' code = 7785 symbol = chr(code) # symbol = 'ṩ' - кодирование Unicode # 2. Функция ord symbol = '5' code = ord(symbol) # code = 53 symbol = 'ṩ' code = ord(symbol) # code = 7785 symbol = ' ' # символ пробел code = ord(symbol) # code = 32
7. Можно ли в Python сложить строку с числом?

Нет, нельзя. Если нужно сложить число в форме строки, то для этого используется соответствующая функция преобразования. Если нужно сложить две строки (конкатенация строк), то число конвертируется в строку с помощью соответствующей функции.

Пример.

# Сложить строку с числом не получится s = '25' # это строка a = 30 # это число # Случай 1. Сложить (суммировать) два числа # Предварительно нужно конвертировать строку в число b = int(s) res = a + b print('As numbers: a + s = ', res) # Случай 2. Сложить две строки # Предварительно нужно конвертировать число в строку res_str = str(a) + s print('As strings: a + s = ', res_str)

Результат выполнения программы

As numbers: a + s = 55 As strings: a + s = 3025

Связанные темы

  • Строки. Общие понятия. Объявление строки. Операции над строками. Примеры
  • Экранированные последовательности. Неформатированные строки. Многострочные блоки текста
  • Доступ по индексам. Срезы. Получение фрагмента строки. Примеры

Преобразование строки в число в Python

Преобразование данных одного типа в другой является обычной задачей в программировании. В Python типы данных можно легко преобразовать друг в друга.

Алексей Кодов
Автор статьи
7 июля 2023 в 17:34

Преобразование данных одного типа в другой является обычной задачей в программировании. В Python типы данных можно легко преобразовать друг в друга. Это облегчает обработку данных и помогает избежать ошибок. В этой статье рассмотрим, как преобразовать строку в число (целое или дробное).

Преобразование строки в целое число

В Python для преобразования строки в целое число используется встроенная функция int() . Она принимает на вход строку и возвращает целое число. Если строка не может быть преобразована в целое число, Python выдаст ошибку ValueError .

число = int("123") print(число) # Выведет: 123

Преобразование строки в число с плавающей точкой

Если нужно преобразовать строку в число с плавающей точкой (дробное число), используется функция float() . Она работает аналогично функции int() , но возвращает число с плавающей точкой.

дробное = float("123.45") print(дробное) # Выведет: 123.45

Нужно быть аккуратным с преобразованием строк в числа, так как если строка содержит символы, которые не могут быть интерпретированы как число (например, буквы), Python выдаст ошибку. Поэтому перед преобразованием строки в число рекомендуется убедиться, что это возможно.

Для проверки, можно ли строку преобразовать в число, можно использовать метод isdigit() для проверки целых чисел и немного более сложную проверку для чисел с плавающей точкой:

строка = "123" print(строка.isdigit()) # Выведет: True строка_с_плавающей_точкой = "123.45" try: float(строка_с_плавающей_точкой) print(True) except ValueError: print(False) # Если строка не может быть преобразована во float, выведет False

Понимание, как преобразовывать строки в числа, является важным навыком при работе с данными в Python.

Функции print() и input(). Преобразование строк в числа int() и float()

О функции print() мы с вами уже немного говорили, и вы видели ее использование в самых простых ситуациях, например:

print(1)
print(3, 5, 7)

выведет указанные значения через пробел. Также можно выводить отдельные переменные:

a = -6.84 print(a)

результаты арифметических операций:

print(a * 2 + 3)

или функций:

print(abs(a * 2 + 3))
  • sep – разделитель между данными;
  • end – завершающий символ или строка.
a = -6.84 b = 7 c = 25.6 print(a, b, c)

Как видите, между ними автоматически добавляется пробел. Но этот символ можно поменять через параметр sep, например, так:

print(a, b, c, sep=" | ")

Соответственно, чтобы параметр sep «сработал», необходимо хотя бы два аргумента в функции print(). Если указать, например, один:

print(a, sep=" | ")

то здесь разделять нечего и он будет проигнорирован. А вот для двух переменных уже появится вертикальная черта:

print(a, b, sep=" | ")

Второй параметр end задает окончание строки вывода и по умолчанию: end = ‘\n’ переводу на следующую строку. Это такой спецсимвол, о которых мы также еще будем говорить. Так вот, благодаря такому параметру end два последовательных вызова функции print() напечатают текст с новой строки:

print("Hello") print("World!")

Но если в первой функции print() добавить этот параметр с пробелом:

print("Hello", end=' ') print("World!")

то увидим в одной строчке оба слова. Разумеется, здесь параметр end с пробелом применяется только к первому print(). У второго он уже берется по умолчанию с переносом строки. Последнее, что я хочу рассказать о функции print() – это способ вывода форматированной информации в консоль. Давайте предположим, что у нас имеются две переменные (координаты точки) x и y:

x = 5.76 y = -8

И мы хотим вывести их в формате: «Координаты точки: x = 5.76; y = -8» Сделать это можно несколькими способами. Первый, самый очевидный, записать все через запятую:

print("Координаты точки: x = ", x, "; y = ", y)

Но, начиная с версии Python 3.6, появилась возможность использовать специальные F-строки. О них мы также еще будем говорить, но здесь я приведу простой пример и вы уже сейчас сможете применять этот механизм в своих программах. Запишем функцию print(), следующим образом:

print(f"Координаты точки: x = ; y = ")

Смотрите, здесь перед строкой ставится специальный символ f, указывающий, что это будет F-строка. А, в самой строчке внутри фигурных скобок мы можем записывать любые конструкции языка Python. В данном случае, я просто указал переменные x и y. Видите, как это просто, наглядно и удобно. Сейчас практически всегда используются F-строки для форматированного вывода информации.

Функция input()

Вторая функция input() служит для ввода информации, как правило, с клавиатуры. В самом простом варианте ее можно вызвать так:

a = input()

При этом переменная a будет ссылаться на строку:

print(type(a))

И это важный момент: функция input() всегда возвращает строку. На что это может повлиять? Например, мы хотим вычислить модуль введенного числа:

a = input() b = abs(a)

При вызове функции abs() возникнет ошибка, так как в качестве ее аргумента должно быть число, а не строка. Как решить эту проблему? Очень просто. Если мы знаем, что пользователь должен ввести число, предположим, целое число, то можно воспользоваться функцией:

a = "54" b = int(a)

Теперь b будет ссылаться на число 54, а не строку. И наша программа примет вид:

a = input() a = int(a) b = abs(a) print(b)

Здесь первые две строчки можно объединить и записать их так:

a = int(input())

Но функция int() преобразовывает только целые числа. Если в строке будет хотя бы один не цифровой символ:

int("64.56")

возникнет ошибка. То есть, в нашей программе пользователь обязательно должен вводить целые числа. А как тогда преобразовывать вещественные значения? Для этого есть другая функция:

float("64.56")

Поэтому, когда на входе ожидаются вещественные данные, то следует использовать именно ее:

a = float(input()) b = abs(a) print(b)

Давайте напишем программу для вычисления периметра прямоугольника. Пользователь будет вводить два числа (стороны прямоугольника), а мы, затем, вычислим периметр:

a = float(input()) b = float(input()) print("Периметр:", 2 * (a + b))

Как видите, все достаточно просто. Мы вводим первое число, нажимаем Enter и вводим второе число. Вводить два числа через пробел здесь нельзя, иначе получится строка с двумя числами, разделенные пробелом и ее нельзя будет преобразовать функциями int() и float(). Также в этой программе пользователю совершенно непонятно, что нужно вводить. Давайте добавим подсказки. Для этого в функции input() первым аргументом передается строка:

a = float(input("Введите длину прямоугольника: ")) b = float(input("Введите ширину прямоугольника: ")) print("Периметр:", 2 * (a + b))

Теперь стало гораздо понятнее, что нужно вводить. Забегая вперед отмечу, что в Python можно выстроить конструкцию для ввода значений через пробел. Это делается так:

a, b = map(float, input("Введите две стороны прямоугольника: ").split())

Здесь к каждому введенному значению применяется функция float() для преобразования в вещественные числа. Пока просто запомните эту конструкцию, в дальнейшем она станет понятной, когда мы изучим строки и функцию map(). Или, для ввода целых чисел, она будет принимать вид:

a, b, c = map(int, input("Введите три целых числа: ").split()) print("Периметр треугольника:", a + b + c)

Класс str() в Python, преобразует объект в строку

Класс str() выполнит преобразование и вернет строковую версию объекта. Если объект не указан, класс str() возвращает пустую строку. В противном случае поведение str() зависит от того, задано ли кодировка encoding или значение errors обработчика ошибок.

Если ни кодировка encoding , ни errors обработчик ошибок не заданы, str() вернет object.__str__() , что является «неформальным» или красиво печатаемым строковым представлением объекта. Если объект не имеет метода __str__() , то класс str() будет пытаться получить «формальное» представление repr() . Для строковых объектов функция str() вернет саму строку, переданную в качестве аргумента

Если задан хотя бы один из аргументов encoding или errors , то object должен быть байтоподобным, например bytes или bytearray . В этом случае str(bytes, encoding, errors) эквивалентен вызову bytes.decode(encoding, errors) .

Аргументы encoding и errors :

  • encoding — это имя кодировки, используемой для декодирования или кодирования строкового представления объекта.
  • error является необязательным и указывает как должны обрабатываться ошибки кодирования и декодирования.
    Доступные стандартные обработчики ошибок:
    • ‘strict’ — бросает исключение ValueError , если есть ошибка кодирования. Используется в качестве значения по умолчанию.
    • ‘ignore’ — игнорирует ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.
    • ‘replace’ — вставляет символ ? на место непрочитанных символов, ввиду их отсутствия в используемой кодировке.
    • ‘surrogateescape’ — любые некорректные байты будут представлены как символы Юникода в диапазоне от U+DC80 до U+DCFF . Эти символы, при обратной операции кодирования будут возвращаться в те же байты. Полезно для обработки файлов в неизвестной кодировке.
    • ‘xmlcharrefreplace’ — поддерживается только при записи в файл. Символы, не поддерживаемые кодировкой, заменяются соответствующей ссылкой на символ XML.
    • ‘backslashreplace’ — заменяет искаженные данные на escape-последовательности Python с обратной косой чертой.
    • ‘namereplace’ — поддерживается только при записи, заменяет не поддерживаемые символы на \N <. >escape-последовательности.

    Класс str() имеет дополнительные методы, реализующих различные операции с текстовыми строками.

    Примеры преобразования объектов в строку.

    Приведение типов к строке

    >>> x = 10 >>> str(x) # '10' >>> x = 3.5 >>> str(x) # '3.5' >>> lst = list(range(5)) str(lst) # '[0, 1, 2, 3, 4]' 
    • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
    • Функция abs(), абсолютное значение числа
    • Функция all(), все элементы True
    • Функция any(), хотя бы один элемент True
    • Функция ascii(), преобразует строку в ASCII
    • Функция bin(), число в двоичную строку
    • Класс bool(), логическое значение объекта
    • Функция breakpoint(), отладчик кода
    • Класс bytearray(), преобразует в массив байтов
    • Класс bytes(), преобразует в строку байтов
    • Функция callable(), проверяет можно ли вызвать объект
    • Функция chr(), число в символ Юникода
    • Класс classmethod, делает функцию методом класса
    • Функция compile() компилирует блок кода Python
    • Класс complex(), преобразует в комплексное число
    • Функция delattr(), удаляет атрибут объекта
    • Класс dict() создает словарь
    • Функция dir(), все атрибуты объекта
    • Функция divmod(), делит числа с остатком
    • Функция enumerate(), счетчик элементов последовательности
    • Функция eval(), выполняет строку-выражение с кодом
    • Функция exec(), выполняет блок кода
    • Функция filter(), фильтрует список по условию
    • Класс float(), преобразует в вещественное число
    • Функция format(), форматирует значение переменной
    • Класс frozenset(), преобразует в неизменяемое множество
    • Функция getattr(), значение атрибута по имени
    • Функция globals(), переменные глобальной области
    • Функция hasattr(), наличие атрибута объекта
    • Функция hash(), хэш-значение объекта
    • Функция help(), справка по любому объекту
    • Функция hex(), число в шестнадцатеричную строку
    • Функция id(), идентификатор объекта
    • Функция input(), ввод данных с клавиатуры
    • Класс int(), преобразует в тип int
    • Функция isinstance(), принадлежность экземпляра к классу
    • Функция issubclass(), проверяет наследование класса
    • Функция iter(), создает итератор
    • Функция len(), количество элементов объекта
    • Класс list(), преобразовывает в список
    • Функция locals(), переменные локальной области
    • Функция map(), обработка последовательности без цикла
    • Функция max(), максимальное значение элемента
    • Класс memoryview(), ссылка на буфер обмена
    • Функция min(), минимальное значение элемента
    • Функция next(), следующий элемент итератора
    • Класс object(), возвращает безликий объект
    • Функция oct(), число в восьмеричную строку
    • Функция open(), открывает файл на чтение/запись
    • Функция ord(), число символа Unicode
    • Функция pow(), возводит число в степень
    • Функция print(), печатает объект
    • Класс property(), метод класса как свойство
    • Класс range(), генерирует арифметические последовательности
    • Функция repr(), описание объекта
    • Функция reversed(), разворачивает последовательность
    • Функция round(), округляет число
    • Класс set(), создает или преобразовывает в множество
    • Функция setattr(), создает атрибут объекта
    • Класс slice(), шаблон среза
    • Функция sorted(), выполняет сортировку
    • Декоратор staticmethod(), метод класса в статический метод
    • Класс str(), преобразует объект в строку
    • Функция sum(), сумма последовательности
    • Функция super(), доступ к унаследованным методам
    • Класс tuple(), создает или преобразует в кортеж
    • Класс type(), возвращает тип объекта
    • Функция vars(), словарь переменных объекта
    • Функция zip(), объединить элементы в список кортежей
    • Функция __import__(), находит и импортирует модуль
    • Функция aiter(), создает асинхронный итератор
    • Функция anext(), следующий элемент асинхронного итератора

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *