返回不断变化的变量python

hae*_*cut 2 python recursion counter

我试图在Python 3中返回一个不断变化的变量,变量在while循环中,计数到指定的数字,将其值更改为零,然后重新开始.(例如,1,2,3,4,5,0,1,2,3,4,5,0 ......)这是我的代码:

global x
run = True
def count(l):
    x = 0
    global run
    while run:
        x += 1
        if x == l+1:
            x = 0
        print(x)
Run Code Online (Sandbox Code Playgroud)

当我运行count(5)打印了预期的效果,但1:我试图找到一种方式来不断地在后台运行该循环,和2:变量需要返回,不打印

GetCount()
Run Code Online (Sandbox Code Playgroud)

让它返回所需的结果.

我已经尝试将此添加到函数的末尾:

try:
    return x 
finally: 
    count(l)
Run Code Online (Sandbox Code Playgroud)

但随后在比较期间超出最大递归深度时崩溃

所以我的问题是,1:有没有办法让x连续返回而没有达到最大递归深度?,2:如果有,是否还有一种方法count()可以在后台运行,所以我可以获得x的当前值价值,如果是这样如何?

Mik*_*ler 5

看起来itertools.cycle可以帮忙:

import itertools as it

c = it.cycle(range(6))

for x in range(10):
    print(next(c))
Run Code Online (Sandbox Code Playgroud)

打印:

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

只是next(c)用来得到下一个号码.

print(next(c))
Run Code Online (Sandbox Code Playgroud)

现在打印:

4
Run Code Online (Sandbox Code Playgroud)

因为我们3之前停了下来.您可以使用以下方式设置ID值:

my_id = next(c)
Run Code Online (Sandbox Code Playgroud)