Как преобразовать строку в число?
Для того чтобы преобразовать строку в число, можно использовать встроенные функции языка 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() , 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
Связанные темы
- Строки. Общие понятия. Объявление строки. Операции над строками. Примеры
- Экранированные последовательности. Неформатированные строки. Многострочные блоки текста
- Доступ по индексам. Срезы. Получение фрагмента строки. Примеры
Нужно заменить числа на буквы из алфавита, соответствующие этим числам. Разный результат в программе, как исправить?
Здравствуйте проблема такая, никак не пойму.
Вот задание:
Вам необходимо в строке, полученной со стандартного ввода найти все цифры и заменить их на букву латинского алфавита, располагающуюся по данному индексу (все символы в строке вводятся в нижнем регистре).
Примечание: две цифры не могут располагаться рядом. Те если у вас есть строка «19у» это значит что у вас одна цифра 19, а не 1 и 9. Как результат вы должны получить «sy»
Sample Input:
Hel12o 16e15ple
Sample Output:
Hello people
latin="abcdefghijklmnopqrstuvwxyz" text = input("Введите строку: ") i = 0 s = "" while i < len(text): a = text[i] while "0"
По заданию фразу "Hel12o 16e15ple" выводит так "Hello pe1eple" - правильно меняет буквы из алфавита до пробела, но после пробела почему-то не правильно.
Если же к примеру ввести фразу "12ghj3jhh23" (просто произвольная) - то здесь выдает "lghjcjhhbc" - последние две цифры не воспринимает как число 23 и выводит по буквам "b" и "c".
Если же к примеру поменять 23 на 24: "12ghj3jhh24" - то тут выводит всё как положено "lghjcjhhx" - все правильно заменяет.
В чем может быть проблема? почему не приязнь у программы к числу 23 и пробелам.
Можно как-то подправить именно этот код, без "наворотов", а то я только учусь и еще не вcе понимаю.
- Вопрос задан более года назад
- 4398 просмотров
Перевод строки в числа побуквенно
Соответственно если буква заглавная то ее номер по порядку=ord("Заглавная буква")-64
Пример для "A": ord("A")=65. Соответственно 65-64=1.
Тоже самое для строчных номер строчной буквы по порядку = ord("Строчная буква")-96
Пример для "а": ord("а")=97. Соответственно 97-96=1.
Можно думать про это как про то, что номера всех заглавных букв смещенны относительно их порядка в алфавите на 64 симлова
А номера строчных на 96
Номера строчных букв
for i in 'abcdefghijklmnopqrstuvwxyz': print(i,ord(i))
Номера заглавных букв
for i in 'abcdefghijklmnopqrstuvwxyz': print(i.upper(),ord(i.upper()))