0

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

  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.1步(位置0,0.1,0)
  7. 重复步骤 3-6,直到到达边 a 和 b 的末端(即已考虑点 0...1,0...1,0)。
  8. 返回到边 a 和 b 的起点,沿着 c 边走 0.1 步(位置 0,0,0.1)。
  9. 重复 3-8 直到到达边 a、b 和 c 的末端(即已考虑点 0...1,0...1,0...1 并到达位置 1,1,1)

我正在尝试使用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()
4

1 回答 1

3

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

第二次zcoord()被调用,z仍然大于 并且1.0循环不会运行,也不会打印。

如果你想创建嵌套循环,那么使用整数除以 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))
于 2013-08-19T11:46:46.903 回答