如何在Python中使用双重while循环?

4

Python的双重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 0、2 1、2 3等。为什么它只在一次迭代后停止了?

每次开始执行内部循环之前,您需要重置 j - Ozgur Vatansever
4个回答

6
您可能希望将 j 的“初始化”移至第一个循环内部。
i = 0
while i < 10:
    j = 1
    while j < 11:
        print i, j
        j+=1
    i+=1

在你的代码中,当 j 到达 11 时,内部循环停止执行(包括 print 语句)。在我的代码中,每次 i 改变时我重置了 j ,这样内部循环就会再次执行。

4

因为在第一次迭代后,您的j变量变成了11。需要将其重置:

i = 0
j = 1
while i < 10:
    j= 1 #<-- here
    while j < 11:
        print i, j
        j+=1
    i+=1

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: 存储两个列表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 ""命令。


如果您可以编辑您的答案并解释您展示的代码是做什么的,以及为什么/如何该代码回答了问题,那将非常有帮助。 - Lea Cohen
1
@Lea Cohen,我已经添加了解释。 - Ganesh Kamath - 'Code Frenzy'

0
更符合 Python 风格的方法:
for i in range( 10 ):
    for j in range( 1, 11 ):
        print i, j

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接