Вы применяете срез [:1]
к n
, который является целым числом.Вы не можете разрезать целые числа, потому что они не являются последовательностями.
Ваш заголовок гласит, что вы хотите преобразовать в строку, затем нарезать, а затем преобразовать обратно в целое число, но на самом деле вы этого не делаете.Вместо этого добавьте операцию среза к результату str()
:
o = int(str(n)[:1])
n = int(str(n)[1:])
Первое число, присвоенное o
, является самой старшей цифрой, так что вы можете просто несколько раз делить на 10, пока число не станет меньше 10:
o = n
while o > 10:
o //= 10
или вы можете взять log10 значения, чтобы вы знали, на сколько степеней 10 сместить значение;Вы можете получить оставшиеся цифры n
, используя то же значение величины:
import math
magnitude = int(math.log10(n))
o = n // (10 ** magnitude)
n -= o * (10 ** magnitude)
Демонстрация:
>>> import math
>>> n = 4213
>>> magnitude = int(math.log10(n))
>>> o = n // (10 ** magnitude)
>>> n -= o * (10 ** magnitude)
>>> o, n
(4, 213)
Примите во внимание, что любые нули в значении не собираютсябыть сохраненным;1024
становится 1
и 24
, поскольку потеря этих двух пар равна нулю.Это относится как к int-string-slice-int, так и к арифметическому подходу.Только сохранение n
в виде последовательности строковых цифр сохранит эту информацию.