← Все вопросы

Как преобразовать строку в число и обратно в Python?

Задан 32 месяца назад1.2к просмотров2 ответа
10

Считываю ввод через input(), получаю строку, а мне нужно с ней посчитать. Складываю — а оно склеивает текст вместо сложения. Как превратить строку в число и потом число обратно в строку для вывода?

2 ответа

15
✓ Принятый ответ — помог автору

Строку в целое число — int(), в дробное — float(). Число обратно в строку — str():

s = '42'
n = int(s)        # 42 (целое)
f = float('3.14') # 3.14 (дробное)

back = str(n)     # '42' снова строка

Теперь понятно, почему input() «складывал» неправильно: он всегда возвращает строку, а + для строк — это склейка. '2' + '3' даёт '23', а int('2') + int('3') даёт 5.

Типичный шаблон ввода числа:

x = int(input('Введите число: '))
print(x * 2)

Частые ошибки:

  1. int('3.14') падает с ValueErrorint не понимает точку. Для дробных используйте float.
  2. int(' 42 ') с пробелами по краям — на самом деле работает, int сам обрезает пробелы. А вот int('abc') или int('') — это ValueError.
  3. Чтобы безопасно обработать кривой ввод, оберните в try/except ValueError.

Для вывода числа в строке часто удобнее f-string — он сам зовёт str(): print(f'Результат: {n}').

5

Если строка может оказаться не числом, не давайте программе упасть — проверяйте через try:

s = input()
try:
    n = int(s)
except ValueError:
    print('Это не целое число')

Для проверки «состоит ли строка только из цифр» есть s.isdigit(), но он считает True только для неотрицательных целых без знака и пробелов — '-5'.isdigit() это False. Поэтому для реальной валидации надёжнее try/except.

Ваш ответ

Войдите, чтобы ответить на вопрос.