Это должен дать вам хорошую отправную точку:
def leading(start, end):
leading = []
hundreds = start // 100
while (end - hundreds * 100) > 100:
i = hundreds * 100
leading.append(range(i,i+100))
hundreds += 1
c = hundreds * 100
tens = 1
while (end - c - tens * 10) > 10:
i = c + tens * 10
leading.append(range(i, i + 10))
tens += 1
c += tens * 10
ones = 1
while (end - c - ones) > 0:
i = c + ones
leading.append(i)
ones += 1
leading.append(end)
return leading
Хорошо, все может быть на одном уровне уровня петли. Но я подумал, что это может быть яснее. Надеюсь, это поможет вам ...
Обновление: Теперь я вижу, что вы хотите. Кроме того, код Марии, похоже, не работает для меня. (К сожалению ...) Поэтому, пожалуйста, рассмотрим следующий код:
def leading(start, end):
depth = 2
while 10 ** depth > end : depth -=1
leading = []
const = 0
coeff = start // 10 ** depth
while depth >= 0:
while (end - const - coeff * 10 ** depth) >= 10 ** depth:
leading.append(str(const/10 ** depth + coeff) + "X" * depth)
coeff += 1
const += coeff * 10 ** depth
coeff = 0
depth -= 1
leading.append(end)
return leading
print leading(199,411)
print leading(2169800, 2171194)
print leading(1000, 1453)
print leading(1,12)
Теперь, позвольте мне попытаться объяснить подход здесь. Алгоритм попытается найти «конец», начиная со значения «start» и проверить, находится ли «конец» в следующих 10^2 (что в данном случае равно 100). Если он терпит неудачу, он совершит скачок 10^2 до тех пор, пока он не удастся. Когда это удастся, он пойдет на один уровень глубины ниже. То есть, он сделает скачки на порядок меньше. И петля таким образом, пока глубина не будет равна нулю (= прыжки 10^0 = 1). Алгоритм останавливается, когда он достигает значения «end».
Вы также можете заметить, что у меня реализован цикл обертывания, о котором я упомянул, поэтому теперь можно определить начальную глубину (или размер прыжка) в переменной.
Первый цикл while гарантирует, что первый прыжок не превысит значение «end».
Если у вас есть какие-либо вопросы, просто не стесняйтесь спрашивать.
Не можете описать более подробно то, что вы подразумеваете под вложенными группами чисел? – PEZ
Что вы хотите найти Я не понимаю =/ – Denis
Удивительный! что ты уже испробовал? – JoeFish