Как сделать из числа строку python
Перейти к содержимому

Как сделать из числа строку 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

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

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

Пользовательский ввод чисел в строку

Функция input() возвращает все в виде строки, поэтому нужно выполнить явную конвертацию, чтобы получить целое число. Для этого пригодится функция int() .

 
# вывод суммы двух чисел, введенных пользователем

num_1 = int(input("Введите первое число: "))
num_2 = int(input("Введите второе число: "))

print("Тип num_1:", type(num_1))
print("Тип num_2:", type(num_2))

result = num_1 + num_2
print("Сумма введенных чисел:", result)

int(string) конвертирует переданную строку в целое число.

Ввода числа float

По аналогии можно использовать функцию float() .

 
float_1 = float(input("Введите число: "))
print("Тип float_1:", type(float_1))

result = float_1 ** 2
print("Число в квадрате:", result)
Введите число: 1.8 Тип float_1: Число в квадрате: 3.24

Ввод чисел в строку через пробел

Но что произойдет, если вы не знаете количество элементов ввода?

Предположим, что от пользователя нужно получить список чисел и вернуть их сумму. При этом вы не знаете количество элементов в этом списке. Как же запросить ввод для него?

Для этого можно использовать split и функции map . Метод split() делит введенную строку на список подстрок. После этого map() выполняет функцию int() для каждого элемента списка.

 
entered_list = input("Введите список чисел, разделенных пробелом: ").split()
print("Введенный список:", entered_list)

num_list = list(map(int, entered_list))
print("Список чисел: ", num_list)
print("Сумма списка:", sum(num_list))
Введите список чисел, разделенных пробелом: 1 34 4 6548 Введенный список: ['1', '34', '4', '6548'] Список чисел: [1, 34, 4, 6548] Сумма списка: 6587
  • input() возвращает список, содержащий числа, разделенные запятыми.
  • split() возвращает список строк, разделенных пробелами.
  • map() выполняет операцию int() для всех элементов списка и возвращает объект map .
  • list() конвертирует объект map снова в список.

Есть альтернативный способ получить список:

 
entered_list = input("Введите список чисел, разделенных пробелом: ").split()

num_list = [int(i) for i in entered_list]
print("Список чисел: ", num_list)

Обработка ошибок при пользовательском вводе

Часто при конвертации типов возникает исключение ValueError .

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

Например, пользователь вводит случайную строку в качестве возраста.

 
num = int(input("Введите возраст: "))

Функция int() ожидает целочисленное значение, обернутое в строку. Любое другое значение приводит к ошибке. Вот что будет, если, попробовать ввести «Двадцать»:

Введите возраст: Двадцать --------------------------------------------------------- ValueError Traceback (most recent call last) in ----> 1 num_1 = int(input('Введите возраст: ')) ValueError: invalid literal for int() with base 10: 'Двадцать'

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

 
try:
num = int(input("Введите число: "))
print("Все верно. Число:", num)
except ValueError:
print("Это не число.")

Посмотрим, как ввод «Двадцать» сработает теперь:

Введите число: Двадцать Это не число.

В этом примере если пользователь вводит нечисловое значение, то возникает исключение. Однако оно перехватывается инструкцией except , которая в ответ выводит: «Это не число». Благодаря использованию конструкции try-except программа не прекратит работать при некорректном вводе.

Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.

Мои контакты: Почта
Python Q https://yandex.ru/q/loves/python Online

Python Q CEO Pythonru admin@pythonru.com https://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96&d=mm&r=g CEO Pythonru Python Александр Редактор https://t.me/cashncarryhttps://pythonru.com/https://yandex.ru/q/profile/cashnc/ PythonRu.com admin@pythonru.com Alex Zabrodin 2018-10-26 Online Python, Programming, HTML, CSS, JavaScript

[python]Сконвертировать целое число в байтовую строку

Какой самый эффективный способ сконвертировать целое число в байтовую строку в питоне (2.7)? Есть такой вариант:

binascii.unhexlify("%x" % n) 

Подозреваю, что это не самый эффективный метод. Через struct сделать не выходит - не работает для больших чисел.

provaton ★★★★★
13.03.12 14:28:21 MSK
jessey
( 13.03.12 14:31:31 MSK )

в StringIO записать как двоичные данные?

anonymous
( 13.03.12 14:45:24 MSK )
anonymous
( 13.03.12 14:45:38 MSK )
Ответ на: комментарий от anonymous 13.03.12 14:45:38 MSK

Говорю же - не работает для больших чисел.

provaton ★★★★★
( 13.03.12 14:52:31 MSK ) автор топика
Ответ на: комментарий от jessey 13.03.12 14:31:31 MSK

Ты хоть понял о чем я?

provaton ★★★★★
( 13.03.12 14:52:41 MSK ) автор топика
Ответ на: комментарий от anonymous 13.03.12 14:45:24 MSK

Чтоб записать двоичные данные как раз и надо иметь байтовую строку.

provaton ★★★★★
( 13.03.12 14:57:17 MSK ) автор топика
Ответ на: комментарий от provaton 13.03.12 14:52:31 MSK

Используй в struct q:

>>> struct.unpack('q', struct.pack('q', 100000000000000000)) (100000000000000000,) 

anonymous
( 13.03.12 14:57:38 MSK )
Ответ на: комментарий от anonymous 13.03.12 14:57:38 MSK

Не работает, у меня очень большое число (битовая длина - 4096)

In [3]: struct.unpack('q', struct.pack('q', a)) --------------------------------------------------------------------------- error Traceback (most recent call last) /home/nss/ in () ----> 1 struct.unpack('q', struct.pack('q', a)) error: integer out of range for 'q' format code 

provaton ★★★★★
( 13.03.12 15:15:25 MSK ) автор топика
Ответ на: комментарий от provaton 13.03.12 15:15:25 MSK

у меня очень большое число (битовая длина - 4096)

И в каком «двоичном представлении» ты хочешь его видеть? %)

tailgunner ★★★★★
( 13.03.12 15:16:26 MSK )
Ответ на: комментарий от tailgunner 13.03.12 15:16:26 MSK

> И в каком «двоичном представлении» ты хочешь его видеть? %)

Мне надо закодировать RSA-подпись так, что можно было ее верифицировать в php (пока пробую через http://phpseclib.sourceforge.net/). pycrypto возвращает подпись числом. phpseclib число не читает, читает байтовую строку. Вот и думаю что делать. Брать openssl не хочется, там API какой-то жуткий, а задача-то простейшая.

provaton ★★★★★
( 13.03.12 15:19:57 MSK ) автор топика
Ответ на: комментарий от provaton 13.03.12 15:19:57 MSK

Мде. Тогда просто используй hex(твоечисло).

Числа в строке

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

Ввод Вывод
a = [1, 2, 3] 1 2 3 1 3 99 52
from_string_to_list("1 3 99 52", a)
print(*a)

Ввод Вывод
a = [77, 'abc'] 77 abc
from_string_to_list("", a)
print(*a)

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Определите среднее геометрическое чисел от числа в строке А к числу в строке В включительно
Не могу понять что нужно сделать с числами. Задано текстовый файл, в каждой строке которого.

Работа с массивами. Поиск наименьшего числа в строке и наибольшего в строке
Добрый вечер. Надо найти наименьшее число в строке и наибольшее в столбце. Примерно вот так.

два числа в первой строке и один из знаков +,-,*,/ во второй строке
Товарищи, помогите составить прогу в паскале которая позволит ввести два числа в первой строке и.

Как сделать так, чтобы программа различала числа и другие символы в строке в строке?
Например: из строки 54+3 программа должна записать числа 54 и 3 в вектор, и сложить их.

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

3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435

Лучший ответ

Сообщение было отмечено ArtAndreev21 как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13
In [1]: def from_string_to_list(string, container): . container.extend(map(int, string.split())) . In [2]: a = [1, 2, 3] . from_string_to_list("1 3 99 52", a) . print(*a) 1 2 3 1 3 99 52 In [3]: a = [77, 'abc'] . from_string_to_list("", a) . print(*a) 77 abc

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

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