I have a generator function:
def emit_gel() -> Generator[int, int, None]:
number: int = 50
step: int = 10
while True:
yield number
number = number + random.randint(0, step)
gel_generator = emit_gel()
for gel in gel_generator:
print(gel)
It generates numbers from 50 to 100, incrementing it by random number from 0 to step.
How do I use a .send()
(and only send
) to inverse the step's sign, when a condition is met? For example:
gel_generator = emit_gel()
for gel in gel_generator:
print(gel)
if gel > 70:
gel_generator.send(?)
I've tried to implement second yield like:
yield number
number = number + random.randint(0, step * (yield 1))
But it returns 1 and stops. Moreover, it will always present second yield.
Maybe, I should rewrite a generator or leave any hope to change a sign by only .send()
.