Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:为什么要执行这段代码?_Python_For Loop_Scope_While Loop - Fatal编程技术网

Python:为什么要执行这段代码?

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 为什么会发生这种情况?我如何达到预期的行为 这是: 你的问题是它为什么运行。您的最外层的条件

我是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
为什么会发生这种情况?我如何达到预期的行为

这是:

你的问题是它为什么运行。您的最外层的条件是一个
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,