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]