Python 获取启动和停止之间的数字,并在超过最大值时重新启动计数器

Python 获取启动和停止之间的数字,并在超过最大值时重新启动计数器,python,Python,我的目标是获取开始和停止之间的所有数字。如果起始点超过定义的最大值(重新启动\u点),则应再次从1开始 例如: start = 4 stop = 8 restart_point = 12 结果应该是:[4,5,6,7,8] start = 9 stop = 3 restart_point = 12 结果应该是:[9,10,11,12,1,2,3] 下面的代码可以工作,但我觉得有点复杂。我很高兴能找到替代方案 start = 10 stop = 3 restart_point = 12 if

我的目标是获取
开始
停止
之间的所有数字。如果起始点超过定义的最大值(
重新启动\u点
),则应再次从1开始

例如:

start = 4
stop = 8
restart_point = 12
结果应该是:
[4,5,6,7,8]

start = 9
stop = 3
restart_point = 12
结果应该是:
[9,10,11,12,1,2,3]

下面的代码可以工作,但我觉得有点复杂。我很高兴能找到替代方案

start = 10
stop = 3
restart_point = 12

if stop - start < 0:
  difference = restart_point - start + stop
else:
  difference = stop - start

numbers = []

r = 0
for i in range(difference + 1):
  val = i + start
  if val > restart_point:
    r += 1
    val = r
  numbers.append(val)

print(numbers)
# result -> [10, 11, 12, 1, 2, 3]
start=10
停止=3
重新启动\u点=12
如果停止-启动<0:
差异=重新启动点-启动+停止
其他:
差异=停止-启动
数字=[]
r=0
对于范围内的i(差值+1):
val=i+start
如果val>重新启动_点:
r+=1
val=r
数字。追加(val)
打印(数字)
#结果->[10,11,12,1,2,3]

从您的简单示例中,我可以假设停止和启动都在1和重新启动点之间(包括1和2)。这就足够简单了:

start, stop, restart_point = 10, 3, 12

if stop < start:
    stop += restart_point

numbers = []
for i in range(start-1, stop):
    val = i % restart_point + 1

    numbers.append(val)

print(numbers)

[i代表范围内的i(开始,停止+1)]如果开始如果需要循环编号,请记住使用mod:

start = 9
stop = 3
restart_point = 12

while start % restart_point != stop:
    print(start % restart_point)
    start = start + 1

它是基于0索引的,但很容易修改为基于1索引的。把它留给你:)

我想我会这样做:

numbers = []
x = start

while x <= stop:
    if x > restart_point:
        x = 1
    numbers.append(x)
    x = x + 1
number=[]
x=开始
当x点重新启动时:
x=1
数字。追加(x)
x=x+1
输出:

(python37) C:\Users\Documents>py test.py
[9, 10, 11, 1, 2, 3]
这是:

start, stop, restart_point = (10, 3, 12)
x = list(range(start, 1 + min(stop, restart_point))) + \
    list(range(start, 1 + (start>stop) * max(stop, restart_point))) + \
    list(range(1, 1 + (start>stop) *stop))
print(x)
输出

[10, 11, 12, 1, 2, 3]

停止可以比开始低?是的,因为我想要一系列的数字。如果stop是2,start是3,我想得到数字[3,4,5,6,7,8,9,10,11,12,1,2],在你的例子中,restart_point是12,对吗?是的,确切地说restart_point是12,所有例子都是12。幸运的是,这在restart point处输出零,与OP的预期输出不同。比我的解决方案简单得多。非常感谢你。
(python37) C:\Users\Documents>py test.py
[9, 10, 11, 1, 2, 3]
start, stop, restart_point = (10, 3, 12)
x = list(range(start, 1 + min(stop, restart_point))) + \
    list(range(start, 1 + (start>stop) * max(stop, restart_point))) + \
    list(range(1, 1 + (start>stop) *stop))
print(x)
[10, 11, 12, 1, 2, 3]