Как преобразовать строку в число и обратно в Python?
Считываю ввод через input(), получаю строку, а мне нужно с ней посчитать. Складываю — а оно склеивает текст вместо сложения. Как превратить строку в число и потом число обратно в строку для вывода?
2 ответа
Строку в целое число — 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)
Частые ошибки:
int('3.14')падает сValueError—intне понимает точку. Для дробных используйтеfloat.int(' 42 ')с пробелами по краям — на самом деле работает,intсам обрезает пробелы. А вотint('abc')илиint('')— этоValueError.- Чтобы безопасно обработать кривой ввод, оберните в
try/except ValueError.
Для вывода числа в строке часто удобнее f-string — он сам зовёт str(): print(f'Результат: {n}').
Если строка может оказаться не числом, не давайте программе упасть — проверяйте через try:
s = input()
try:
n = int(s)
except ValueError:
print('Это не целое число')
Для проверки «состоит ли строка только из цифр» есть s.isdigit(), но он считает True только для неотрицательных целых без знака и пробелов — '-5'.isdigit() это False. Поэтому для реальной валидации надёжнее try/except.