从while循环返回而不退出python

Pau*_*ven 1 python for-loop while-loop python-3.x

我知道这是不可能的。返回将退出它。有没有办法使之成为可能。我有while循环,它计算值。我想从while循环返回该值,并将其用于进一步处理,然后再次返回while循环,并在停止的地方继续。我知道返回会退出循环。如何使其成为可能。

这是示例代码:

import datetime
import time
def fun2(a):
    print("count:", a)
def fun():
    count = 0
    while 1:
        count = count+1
        time.sleep(1)
        print(count)
        if count == 5:
            return count
a = fun()
fun2(a)
Run Code Online (Sandbox Code Playgroud)

我的输出:

1
2
3
4
5
count: 5
Run Code Online (Sandbox Code Playgroud)

要求的输出:

1
2
3
4
5
count: 5
6
7
8
9
and goes on....
Run Code Online (Sandbox Code Playgroud)

Dev*_*ngh 12

好像您需要一个发电机。生成器将yield在调用时记住该值及其被5整除时的值(我认为是通过查看输出来假定的)next,并且会记住较早的状态,直到next再次调用它为止。另请注意,这是一个无限生成器。

def fun():
    count = 0
    while True:
        count = count+1
        print('inside fun', count)
        if count % 5 == 0:
            yield count

f = fun()
print(next(f))
print(next(f))
Run Code Online (Sandbox Code Playgroud)

输出将是

inside fun 1
inside fun 2
inside fun 3
inside fun 4
inside fun 5
5
inside fun 6
inside fun 7
inside fun 8
inside fun 9
inside fun 10
10
Run Code Online (Sandbox Code Playgroud)