5

我是 python 的初学者,使用 v2.7.2 这是我尝试在命令提示符下执行的内容

 p = 2
 while(p>0):
     for i in range(10):
          print i+1 , p
          p-=1

预期的输出是

1 2
2 1

但是实际输出是

1 2
2 1
3 0
4 -1
5 -2
6 -3
7 -4
8 -5
9 -6
10 -7

为什么会这样?以及如何实现预期的行为?

4

3 回答 3

6

while 条件仅在 for 循环完成后再次测试。你可以这样做

p = 2
for i in range(10):
    if p <= 0:
        break
    print i+1 , p
    p-=1
于 2013-06-28T11:43:37.390 回答
5

这是我得到的输出

1 2
2 1
3 0
4 -1
5 -2
6 -3
7 -4
8 -5
9 -6
10 -7

你关于它为什么运行的问题。您最外层的条件是一个while循环,在第一次执行时为真,但是它直接运行到嵌套的 for 循环中。发生这种情况时,直到循环完成第一次执行(这就是为什么 p = -7) while才会检查 , 。for

你想要的是这个

p = 2
for i in range(10):
    if p <= 0:
        break
    print i+1 , p
    p-=1

这给出了输出:

1 2
2 1
于 2013-06-28T11:42:29.970 回答
0

欢迎来到 python :-)

你可以试试这个:

p = 2
for i in range(1, p+1):
    print i,
print
for i in range(p, 1, -1):
    print i,

这将打印所需的输出。不仅对于 2,而且如果您更改 p 的值,它将打印相同的输出。

range 函数可以接受三个参数,即 start、stop 和 step。如果给定 range(x),它将以 start 为 0,step 为 1 并上升到 x(x 不包括在内)。如果你给定 range(y, x),它将从 y 开始并上升到 x,默认步长值为 1。

在示例中,我使用了 range(p, 0, -1) ,它将起点作为 'p',步长为 -1,并递减 p 的值直到 1 并退出。要了解有关范围的更多信息,请单击此处

于 2013-06-28T11:58:42.290 回答