--- Python 3.7.0 ---
import typing
from typing import List #Импортируем библиотеку, предоставляющую удобные классы для указания типов
def JoinInteger(ToInt:List[str]): #Функция, склеивающая массив строк в целое число (если возможно)
return int(''.join(ToInt))
def Caprekar(OrigNumber:str): #Функция, выполняющая описанные действия над числом. Принимает число В ВИДЕ СТРОКИ
SortedNum = JoinInteger(sorted(list(OrigNumber), key = lambda digit: int(digit), reverse=True)) #Сортируем цифры в числе на основе их числового значения в порядке убывания
SortedReversed = JoinInteger(str(SortedNum)[::-1].split())
ToRet = str(SortedNum - SortedReversed)
return ToRet
def FromFile(fname): #Функция для считывания входных данных из файла
with open(fname, 'r', encoding = 'utf-8') as Input:
readed = Input.read()
return readed
def Dump(fname, Value): #Записывает в fname значение Value
with open(fname,'w', encoding = 'utf-8') as Output:
Output.write(Value)
def main(): #Тело программы
RawInput = FromFile('input.txt')
IsCapr = False
CaprCount = 0
temp = RawInput
while (not IsCapr):
NewNum = Caprekar(temp)
print(temp, NewNum)
if (NewNum == temp): Dump('Output.txt', f'{NewNum}\n{CaprCount}'); return
temp = NewNum
CaprCount += 1
if __name__ == '__main__':
main()
Объяснение: