Начните с обёртки вокруг вашей функции:
def my_generator():
value = 1
while True:
result = count_sequence(value)
yield result
value += 1
, затем вставьте определение count_sequence
, заменив return
на yield
и n
на value
. (В этом случае я пропускаю шаг и также напрямую возвращаю возвращаемое значение, вместо того, чтобы присвоить его сначала result
, а затем один раз yield result
в нижней части while
l oop.)
def my_generator():
value = 1
while True:
if value == 1:
yield "2"
elif value == 2:
yield "12"
else:
x = "12"
for i in range(3, value+1):
x += "$"
l = len(x)
count = 1
temp = ""
for y in range(1, l):
if x[y] != x[y-1]:
temp += str(count)
temp += x[y-1]
count = 1
else:
count += 1
x = temp
yield x
value += 1
Затем вы можете немного упростить его, например, вытащив первые два оператора выражения yield
из l oop и избавившись от оператора if
.
def my_generator():
yield "2"
yield "12"
value = 3
while True:
x = "12"
for i in range(3, value+1):
x += "$"
l = len(x)
count = 1
temp = ""
for y in range(1, l):
if x[y] != x[y-1]:
temp += str(count)
temp += x[y-1]
count = 1
else:
count += 1
x = temp
yield x
value += 1