Python 3:为什么我的while循环退出?

时间:2013-08-19 11:44:36

标签: python python-3.x while-loop

我试图解决的任务可能是最好的解释:

  1. 考虑一个立方体。每一侧(a,b,c)的长度为1个单位。
  2. 在a,b和c全部相交的位置放置一个点(位置0,0,0)。
  3. 找到那时的能量。
  4. 沿着a侧移动0.1个单位(位置0.1,0,0)。
  5. 重复步骤3和4,直到到达a侧的末端(即已经考虑了点0 ... 1,0,0)。
  6. 返回a侧的开头,沿b侧(位置0,0.1,0)采取0.1步
  7. 重复步骤3-6,直到到达边a和b的末端(即已考虑点0 ... 1,0 ... 1,0)。
  8. 返回到a和b侧的起点,沿c侧(位置0,0,0.1)采取0.1步。
  9. 重复3-8,直到到达a,b和c两侧的末端(即已考虑点0 ... 1,0 ... 1,0 ... 1并达到1,1,1的位置)
  10. 我试图通过定义循环和函数来使用python输出每个位置的列表,但是一旦到达x = 0,y = 0 z = 1.0,它就会停止。在我看来,我的两个while循环不起作用....

    我到目前为止的代码如下:

    def zcoord():
        global z
        while z<=1.0:        
            print('%.2f' % x + ' %.2f' % y + ' %.2f' % z)
            z+=0.1
    
    def ycoord():
        global y
        while y<=1.0:
            zcoord()
            y+=0.1
    
    def xcoord():
        global x
        while x<=1.0:
            ycoord()
            x+=0.1
    x=0.0
    y=0.0
    z=0.0
    xcoord()
    

1 个答案:

答案 0 :(得分:3)

你的循环都在工作,但你的zcoord()函数只打印一个循环

第二次调用zcoord()时,z 大于1.0并且循环将无法运行,并且不会打印。< / p>

如果你想创建嵌套循环,那么使用整数更简单并除以10:

for x in range(11):
    for y in range(11):
        for z in range(11):
            print('%.2f' % (x/10.0) + ' %.2f' % (y/10.0) + ' %.2f' % (z/10.0))

可以使用itertools.product()

将其折叠为一个循环
from itertools import product

for x, y, z in product(range(11), repeat=3):
    print('%.2f' % (x/10.0) + ' %.2f' % (y/10.0) + ' %.2f' % (z/10.0))