Python:为什么要执行这段代码?
我是python的初学者,使用v2.7.2,下面是我在命令提示符下尝试执行的内容Python:为什么要执行这段代码?,python,for-loop,scope,while-loop,Python,For Loop,Scope,While Loop,我是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 为什么会发生这种情况?我如何达到预期的行为 这是: 你的问题是它为什么运行。您的最外层的条件
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
为什么会发生这种情况?我如何达到预期的行为 这是:
你的问题是它为什么运行。您的最外层的条件是一个while
循环,第一次执行时为真,但是它直接运行到一个嵌套for循环。发生这种情况时,在循环的完成其第一次执行之前,不会检查while
(这就是为什么p=-7)
你想要的是:
while条件仅在for循环完成后再次测试。你可以这样做
p = 2
for i in range(10):
if p <= 0:
break
print i+1 , p
p-=1
p=2
对于范围(10)内的i:
如果p欢迎使用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。如果给定范围(x),则起点为0,步数为1,直至x(不包括x)。如果您给定范围(y,x),它将从y开始,然后上升到x,默认步长值为1
在这个例子中,我使用了范围(p,0,-1),它以“p”为起点,以-1为步长,递减p的值直到1,然后退出。要了解更多有关范围的信息,请单击。这真的是输出还是一直到10?@doctorlove这肯定不是OP得到的输出。抱歉!我对它进行了编辑!谢谢您的代码不会生成您打印的实际输出。按照你写的方式,只显示前五行。看起来有人又编辑了它!我会修好的,谢谢你的注意。你能帮我修好吗?12
21
这就是我要找的谢谢@约瑟拉克里希纳修好了。谢谢你抓住了。不,现在我不是changing@gnibbler我刚刚在ideone中运行了它,并包含了到输出的链接。是的,现在它与我的答案完全匹配:谢谢!但是我试图用条件句来解决它。@josyllakrishna条件句?你的意思是通过if语句还是通过while循环?
1 2
2 1
p = 2
for i in range(10):
if p <= 0:
break
print i+1 , p
p-=1
p = 2
for i in range(1, p+1):
print i,
print
for i in range(p, 1, -1):
print i,