先上代码
n,m = map(int,input("").split()) #n获取外部遍历的长度,m获取内部循环的长度
d = 0 #d定义外部遍历的初值
while n > 0:
for k,i in zip(range(d,d+m),range(m)):
if n < 1 : #外部遍历结束后跳出
break
print(k,i)
n -= 1
d = k + 1
效果如下
可能不够直观,可以略微修改一下代码,使遍历和循环的初值为1
n,m = map(int,input("").split()) #n获取外部遍历的长度,m获取内部循环的长度
d = 1 #d定义外部遍历的初值
while n > 0:
for k,i in zip(range(d,d+m),range(1,m+1)):
if n < 1 : #外部遍历结束后跳出
break
print(k,i)
n -= 1
d = k + 1
效果如下
关于for循环内部的break语句
已知在for循环中,语句会一直遍历到最后一个参数,在这段代码中,当记录外部遍历长度的n < 0即外部遍历结束时,若n不为m的倍数也就说,在n<0时for循环还在运行中,n不会第一时间和外部的while条件进行对比,结束,具体代码和示例如下
n,m = map(int,input("").split()) #n获取外部遍历的长度,m获取内部循环的长度
d = 1 #d定义外部遍历的初值
while n > 0:
for k,i in zip(range(d,d+m),range(1,m+1)):
#if n < 1 :
#break
print(k,i)
n -= 1
d = k + 1
可见k到了17没有结束,一直运行到了20.
代码思路
通过while语句使for语句循环运行,调整for语句的参数,使循环时for语句的遍历范围不同.