python double while循环是否与java双循环不同? 当我运行此代码时:
i = 0
j = 1
while i < 10:
while j < 11:
print i, j
j+=1
i+=1
我得到以下输出:
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
0 10
我希望它继续循环打印1 0,1 1 1,2 2,... 2 0,2 1 2,3 3 ...等等。为什么它只在一次迭代后停止?
答案 0 :(得分:4)
您可能希望在第一个循环中移动j
“初始化”。
i = 0
while i < 10:
j = 1
while j < 11:
print i, j
j+=1
i+=1
在您的代码中,只要j
到达11
,内部循环就会停止执行(使用print
语句)。在我的代码中,每次j
更改时我都会重置i
,以便内部循环再次执行。
答案 1 :(得分:3)
因为你的j在第一次迭代后得到11。需要重置它:
i = 0
j = 1
while i < 10:
j= 1 #<-- here
while j < 11:
print i, j
j+=1
i+=1
答案 2 :(得分:1)
替代:
list1=list(range(0,10))
list2=list(range(0,11))
l = [(x,y) for x in list1 for y in list2]
for a in l:
for b in a:
print b,
print ""
说明:
第1步:
存储2列出list1=list(range(0,10))
和list2=list(range(0,11))
,以便我们知道左右值中的值。
第2步:
获取通过从list1和list2获取值生成的对列表的所有组合的列表,并使用命令l = [(x,y) for x in list1 for y in list2]
第3步:
获取列表l
的每个元素。由于我们希望在同一行中打印一对,请使用print b,
第4步:
要在每个后续元素之间打印下一行(\n
)字符,请使用最后一行中显示的print ""
命令。
答案 3 :(得分:0)
更加pythonic的方法:
for i in range( 10 ):
for j in range( 1, 11 ):
print i, j