Сижу час и не понимаю как это произошло. Либо я устал и туплю, но я читаю код и не понимаю как так получается…
KAGORЭто результат того, что человек, писавший всё это, решил показать, какой он умный. Для этого у него имеется стандартный критерий новичка “умный код = короткий код”. Он его применил, поэтому теперь ты, читающий его код, должен сидеть и разворачивать у себя в голове всё это обратно, чтобы просто понять. Так выглядит работа говнокодера - куча коротких кодов, которые проще выкинуть, чем понимать, тратя на это время.
Либо я устал и туплю, но я читаю код и не понимаю
>>> def minelem(lst, i=0, length=None, acc=None): ... if length is None: ... length = len(lst) ... if i == length: ... return acc ... if acc is None: ... acc = lst[0] ... if lst[i] < acc: ... return minelem(lst, i + 1, length, lst[i]) ... else: ... return minelem(lst, i + 1, length, acc) ... >>> minelem([]) >>> minelem([1]) 1 >>> minelem([1, 2]) 1 >>> minelem([2, 1]) 1 >>> minelem([5, 4, 1, 2, 7, 6]) 1 >>> minelem([3, 2, 1]) 1 >>>
>>> def nummirror(n, acc=0): ... if n == 0: ... return acc ... else: ... return nummirror(n // 10, acc * 10 + n % 10) ... >>> nummirror(1) 1 >>> nummirror(12) 21 >>> nummirror(21) 12 >>> nummirror(123) 321 >>> nummirror(1234) 4321 >>>
py.user.nextЛучше скажу как я читаю код, все равно ничего не понял. Если n равно нулю верни 0(т.е acc), иначе верни равенство от целочисленного деления n на 10(например хотим развернуть число 123, получается 12), потом 0 умножаем на 10 получаем 0 и суммируем остаток от деления 123 на 10(это у нас 3). Получается (12,3). Каким образом получается 321 не понял…
KAGORЕсли n равно нулю, то верни acc, иначе вычисли функцию от новых n и acc и верни её результат. Внутри той функции происходит то же самое. Если n равно нулю, то верни acc, иначе вычисли функцию от новых n и acc и верни её результат. Внутри той функции происходит то же самое. И так оно будет спускаться, пока n не станет равно нулю из-за делений. В acc (accumulator) будет постепенно накапливаться перевёрнутое число, так как при каждом внутреннем вызове функции к acc дописывается цифра, взятая из числа в n.
Если n равно нулю верни 0(т.е acc), иначе верни равенство от целочисленного деления n на 10
py.user.nextБлин, спасибо большое Теперь понял.