创建一个“蛇”计数器

agf*_*997 1 python for-loop python-3.x

我只是想弄清楚逻辑并使用 Python 来帮助我做到这一点。最终,我需要使用 ImageJ 宏语言来解决这个问题。

我不知道我是否使用了正确的术语,但我想创建一个“蛇”计数器。

x = 1
number = 12
maxVal = 3
minVal = 1

for i in xrange(number):
    %do something
    x = incrementSnakeCounter(x, maxVal, minVal)
    print("i = ", i)
    print("x = ", x)
Run Code Online (Sandbox Code Playgroud)

“蛇”部分使计数器仅上升到maxVal,在下一次迭代中重复该数字,向下计数到minVal,在下一次迭代中重复该值,并重复该过程。

例如,在上面

我希望发生以下情况:

i = 0
x = 1

i = 1
x = 2

i = 2
x = 3

i = 3
x = 3

i = 4
x = 2

i = 5
x = 1

i = 6
x = 1

i = 7
x = 2

i = 8
x = 3

i = 9
x = 3

i = 10
x = 2

i = 11
x = 1
Run Code Online (Sandbox Code Playgroud)

sch*_*ggl 5

你会发现一些有用的工具itertools

from itertools import chain, cycle

def snake(lower, upper):
    return cycle(chain(range(lower, upper+1), range(upper, lower-1, -1)))

> s = snake(1,3)

> [next(s) for _ in range(10)]
[1, 2, 3, 3, 2, 1, 1, 2, 3, 3]
Run Code Online (Sandbox Code Playgroud)