doza_and
Но в ваших примерах разложение чисел, написание программ на месте и прочие ограничения возникают в силу понятных и естественных причин.
В реальных программах эти “ограничения” всегда возникают. Чтобы их обходить, нужно учиться в условиях, приближенных к реальным. Нужно
уметь их обходить. Поэтому когда в образовательном курсе накладывают ограничения и учащийся думает “ну, нафига это делать так, через одно место, если есть удобная функция, для которой даже знать ничего не надо?”, то учащийся просто не врубается, что именно через это его и научат писать реальные программы, которые каждый раз потом сами будут задавать ему ограничения и он не сможет их обойти, попросить кого-то, чтобы их поменяли. В реальном мире, если ты не можешь обойти ограничения, не можешь их проломить, как стену кувалдой, то у тебя просто программы не будет. Проход только один, и он идёт через стену. И для того, чтобы это делать, нужны навыки. А навыки вырабатываются через такие задачи, которые учебные, но похожи на настоящие.
doza_and
В данном случае извините иметь код типа str(int(input())). это идиотизм.
Я вижу, что ему нужно сделать через
, то есть никакой строчности он не должен использовать. Ему нужно взять число и с ним работать.
Что касается срезов строки, то не во всех языках они есть. Это тоже идёт в качестве причины, по которой нужно задачи эти решать без срезов. Не факт, что он учится на питоне, а писать, используя эти навыки, будет потом на питоне. Он может попасть потом на сишный проект какой-нибудь, где ему надо будет быстро написать подобное решение, а там никаких срезов нет и работа с числами напрямую - обычное дело.
doza_and
А на практике для изучения работы с целыми на мой взгляд полезнее придумать задачу на извлечение фрагментов из упакованных двоичных данных.
Двоичные представления чисел, задачи на операции с двоичными данными, не покрывают всю алгебру, которая встречается в простеньких алгоритмах. Те же рекуррентные соотношения, которые нужно уметь делать, гораздо ближе к алгебре, чем к дискретной математике. Там нужно понимать свойства факториалов, делить многочлены, чтобы получить коэффициенты с переменной. Это мы даже не говорим о реальных задачах, где физика участвует и математики там хватает. Те же задачи на силу гравитации, на ускорение, скорость, путь, движения точек - на них одними битовыми операциями ты не отделаешься. А сейчас время такое, что нужно и карты всяких сервисов обрабатывать, геометрию применять далеко не школьную. Это всё на простеньких задачках про битовые сдвиги не постигнешь. Надо уметь работать с числами, надо уметь работать с многочленами, надо понимать природу операций над математическими объектами. Если он будет пытаться на срезах что-то выполнить, он далеко не уедет на этом.