如何在python中使用double while循环?

时间:2015-02-19 04:59:56

标签: python

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 ...等等。为什么它只在一次迭代后停止?

4 个答案:

答案 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]

将其保存在l中

第3步: 获取列表l的每个元素。由于我们希望在同一行中打印一对,请使用print b,

第4步: 要在每个后续元素之间打印下一行(\n)字符,请使用最后一行中显示的print ""命令。

答案 3 :(得分:0)

更加pythonic的方法:

for i in range( 10 ):
    for j in range( 1, 11 ):
        print i, j