首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3:为什么我的while循环存在?

Python 3:为什么我的while循环存在?
EN

Stack Overflow用户
提问于 2013-08-19 11:44:36
回答 1查看 107关注 0票数 0

因此,我所要处理的任务或许是最好的解释:

  1. 考虑一个立方体。每侧(a,b,c)的长度为1单位。
  2. 在所有a、b和c相交点(位置0、0、0)处放置一个点。
  3. 在那点上找出能量。
  4. 沿a面移动点0.1单位(位置0.1,0)。
  5. 重复步骤3和4,直到到达a端(即考虑了点0.1,0)。
  6. 返回到侧a的起点,沿b(位置0、0.1、0)迈出0.1步。
  7. 重复步骤3-6,直到到达边a和b的末端(即点0.1,0.1,0,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,1 )

我试图通过定义循环和函数来使用python输出每个位置的列表,但是一旦我到达x=0,y=0 z=1.0,它就停止了。在我看来,我的are循环中有两个没有工作.

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

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-19 11:46:46

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

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

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

代码语言:javascript
复制
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()折叠成一个循环。

代码语言:javascript
复制
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))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18312968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档