我是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
为什么会这样?以及我如何实现预期的行为?
答案 0 :(得分:6)
while条件仅在for循环结束后再次测试。你可以这样做
p = 2
for i in range(10):
if p <= 0:
break
print i+1 , p
p-=1
答案 1 :(得分:5)
这是output I get:
1 2
2 1
3 0
4 -1
5 -2
6 -3
7 -4
8 -5
9 -6
10 -7
关于它为何运行的问题。您的最外层条件是while
循环,在第一次执行时为true,但它会直接运行到嵌套for循环。如果发生这种情况,while
将不会检查,直到for
循环完成首次执行(这就是为什么p = -7)。
你想要的是this:
p = 2
for i in range(10):
if p <= 0:
break
print i+1 , p
p-=1
给出输出:
1 2
2 1
答案 2 :(得分: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的值,它将打印相同的输出。
范围函数可以采用三个参数,即start,stop和step。如果给出范围(x),它将以0开始,步骤为1并向上移动到x(不包括x)。如果给出范围(y,x),它将从y开始并上升到x,默认步长值为1。
在这个例子中,我使用了范围(p,0,-1),它以起点为'p',步为-1,并将p的值减1直到1并退出。要阅读有关范围的更多信息,请点击here。