#python #python_2x
Например 43 на 4 и 3. В стандартной библиотеке ничего подходящего не нахожу или плохо
знаю математику. Кроме костылей, типа перевести число в строку и разбить, ничего путного
в голову не приходит.
Ответы
Ответ 1
то, что вы хотите получить - это остаток и частное от целочисленного деления на 10Ответ 2
Для двухзначного числа достаточно divmod() вызывать: >>> divmod(43, 10) (4, 3) В общем случае, ничего плохого нет в том чтобы в строку преобразовать: >>> " + ".join(str(123)) '1 + 2 + 3' # сумма цифр (выражение) Если нужно, чтобы отдельные цифры имели тип int, то достаточно map() вызвать: >>> sum(map(int, str(123))) 6 # сумма цифр (результат) Вариант digits = str(number) является читаемым и, не измеряя скорость, я бы не стал предполагать, что работает быстрее для разных входных диапазонов: вариант с map(int, str(number)) или вариант, который явное деление на 10 (основание системы счисления) использует: def digits(n, result=[]): return digits(n//10, [n%10] + result) if n else result or [0] или код с явным циклом: def digits(n): result = [] while n: n, digit = divmod(n, 10) result.append(digit) result.reverse() return result or [0] Пример: >>> digits(123) [1, 2, 3] Для больших n (миллионы цифр) последний вариант мог бы быть более предпочтительным, так как str(long) в СPython является квадратичной операцией, а представленная реализация с явным циклом имела бы линейную сложность, если бы n, digit = divmod(n, 10) за постоянное время выполнялся.Ответ 3
def ttt(n): l = [] while (n > 0): l.insert(0, n%10) n = n/10 return l print ttt(15896) Для 3-его придется править. ИМХО, через строку - проще. П.С. - только для положительных чисел))Ответ 4
Я думаю такое число может состоять не только из двух цифр. Незнаю как в python, но в php я бы делал так: перевел в строку и обращался по номеру символа. Что-то вроде такого:
Комментариев нет:
Отправить комментарий