use*_*326 2 python loops for-loop if-statement
我正在创建一个包含坐标和id号的文件列表.
a只是一个任意值来分隔出点.f是先前打开并稍后关闭的文件.我正在使用下面列出的代码.它应该产生511点,跳过一个本来是第293点的点.相反,它正在跳过169分,我无法弄清楚原因.任何有关这方面的帮助将不胜感激.
id=1
for i in range(0,8,1):
for j in range(0,8,1):
for k in range(0,8,1):
x1=i*a
y1=j*a
z1=k*a
if ((i!=4) & (j!=4) & (k!=4)):
f.write("%4.d 1 4 %4.3f %4.3f %4.3f\n"%(id, x1, y1, z1))
id=id+1
Run Code Online (Sandbox Code Playgroud)
由于您要求i必须与4AND 不同,AND j必须与4AND k不同4,您跳过所有这些中的任何一个点4.使用
if i != 4 or j != 4 or k != 4:
Run Code Online (Sandbox Code Playgroud)
代替.同样地,但可能更容易掌握,你可以写
if not (i == 4 and j == 4 and k == 4):
Run Code Online (Sandbox Code Playgroud)
甚至更好
if i, j, k != 4, 4, 4:
Run Code Online (Sandbox Code Playgroud)
编辑:这是您的代码的完全重写版本:
points = itertools.product(range(0, 8 * a, a), repeat=3)
points = (p for p in points if p != (4 * a, 4 * a, 4 * a))
with open("filename", "w") as f:
for id_p in enumerate(points, 1):
f.write("%4.d 1 4 %4.3f %4.3f %4.3f\n" % id_p)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |