Python - 在 for 循环中增加范围下限
Python - Increment lower range boundary in a for loop
我正在尝试在 for 循环期间逐渐增加范围的下限。这就是它的工作原理(我是 Python 的新手,所以假设完全无知):
start = 0
reset = bool
for i in range(start, 6):
print(i)
if i > 4:
reset = True
if reset == True:
start += 1
i = start
理想情况下,输出如下:
0, 1, 2, 3, 4, 5 重置
1、2、3、4、5 重置
2、3、4、5 *重置
我试过上面的代码但是没有用..
等等
这一定是可行的,不是吗?
请注意,我正在尝试在更复杂的嵌套 'for' 循环中使用它,因此理想情况下,该解决方案可以与之配合使用。
提前致谢!
尝试:
for i in range(0, 6):
for j in range(i,6):
print("{}, ".format(j))
输出:
i = 0 -> j = 0 1 2 3 4 5
i = 1 -> j = 1 2 3 4 5
i = 2 -> j = 2 3 4 5
i = 3 -> j = 3 4 5
等等...
不行!
第一次输入时,它计算 "range(start, 6)" 并使用该结果!所以即使
如果你在完成后更改 "start"!
你可以做的是为你的目的使用一个 while 循环
start = 0
reset = bool
while start<6:
print(i)
if i > 4:
reset = True
if reset == True:
start += 1
i = start
更改循环控制变量对您没有好处,因为:
for i in some_range:
do_something_with(i)
有效地 与(Python 类伪代码)相同:
i = some_range.start
while i != some_range.end:
do_something_with(i)
i = some_range.next
换句话说,无论您在循环中对 i
进行了哪些更改,循环本身都会在下一次迭代中将其丢弃。
像这样的东西可能是一个很好的起点:
# Starting limits.
start = 0
stop = 6
# Outer loop responsible for resets.
while start < stop:
# Disallow reset to start with.
reset = False
# Inner loop responsible for a single sequence.
for i in range(start, stop):
print(i, end=' ')
# Whatever rule you need to trigger reset.
if i > 4:
reset = True
# The actual reset that sets up and starts the next sequence.
if reset == True:
print()
start += 1
break
在该代码中,您实际上有一个 outer 循环来管理重置。到了reset的时候,修改下一个外层循环的参数,跳出内层循环即可:
0 1 2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
问题
单个 for 循环将不起作用,因为 range(start, 6) 根据我正在排序的初始起始值创建迭代器。
之后更改开始对这个数字序列没有影响。
尝试单while循环
start = 0
i = start
while i < 6:
print(i)
i += 1
reset = i > 4
if reset:
print('reset')
start += 1
i = start
输出
0
1
2
3
4
reset
1
2
3
4
reset
2
3
4
reset
3
4
reset
4
reset
5
reset
range
一旦声明就无法更新。或者使用 while
并在循环结束时更改下限。您可以有一个单独的变量 start
用于每次初始化 i
。
print("")
只是一个换行符
k = 6
i = 0
start = 0
while i < k:
print(i, end="")
i += 1
if i == k:
print("")
start += 1
i = start
我正在尝试在 for 循环期间逐渐增加范围的下限。这就是它的工作原理(我是 Python 的新手,所以假设完全无知):
start = 0
reset = bool
for i in range(start, 6):
print(i)
if i > 4:
reset = True
if reset == True:
start += 1
i = start
理想情况下,输出如下:
0, 1, 2, 3, 4, 5 重置
1、2、3、4、5 重置
2、3、4、5 *重置
我试过上面的代码但是没有用..
等等
这一定是可行的,不是吗? 请注意,我正在尝试在更复杂的嵌套 'for' 循环中使用它,因此理想情况下,该解决方案可以与之配合使用。
提前致谢!
尝试:
for i in range(0, 6):
for j in range(i,6):
print("{}, ".format(j))
输出:
i = 0 -> j = 0 1 2 3 4 5
i = 1 -> j = 1 2 3 4 5
i = 2 -> j = 2 3 4 5
i = 3 -> j = 3 4 5
等等...
不行! 第一次输入时,它计算 "range(start, 6)" 并使用该结果!所以即使 如果你在完成后更改 "start"!
你可以做的是为你的目的使用一个 while 循环
start = 0
reset = bool
while start<6:
print(i)
if i > 4:
reset = True
if reset == True:
start += 1
i = start
更改循环控制变量对您没有好处,因为:
for i in some_range:
do_something_with(i)
有效地 与(Python 类伪代码)相同:
i = some_range.start
while i != some_range.end:
do_something_with(i)
i = some_range.next
换句话说,无论您在循环中对 i
进行了哪些更改,循环本身都会在下一次迭代中将其丢弃。
像这样的东西可能是一个很好的起点:
# Starting limits.
start = 0
stop = 6
# Outer loop responsible for resets.
while start < stop:
# Disallow reset to start with.
reset = False
# Inner loop responsible for a single sequence.
for i in range(start, stop):
print(i, end=' ')
# Whatever rule you need to trigger reset.
if i > 4:
reset = True
# The actual reset that sets up and starts the next sequence.
if reset == True:
print()
start += 1
break
在该代码中,您实际上有一个 outer 循环来管理重置。到了reset的时候,修改下一个外层循环的参数,跳出内层循环即可:
0 1 2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
问题
单个 for 循环将不起作用,因为 range(start, 6) 根据我正在排序的初始起始值创建迭代器。
之后更改开始对这个数字序列没有影响。
尝试单while循环
start = 0
i = start
while i < 6:
print(i)
i += 1
reset = i > 4
if reset:
print('reset')
start += 1
i = start
输出
0
1
2
3
4
reset
1
2
3
4
reset
2
3
4
reset
3
4
reset
4
reset
5
reset
range
一旦声明就无法更新。或者使用 while
并在循环结束时更改下限。您可以有一个单独的变量 start
用于每次初始化 i
。
print("")
只是一个换行符
k = 6
i = 0
start = 0
while i < k:
print(i, end="")
i += 1
if i == k:
print("")
start += 1
i = start