私の仕事は、20x20x20の寸法のボックス内にランダムな座標(そのうち512個)を生成することでした。
この3D画像を表示するプログラムには、次の形式のXYZファイルが必要です。
1000.000000 #number of coordinates
comment goes here #coment line
H 0.000000 0.000000 0.000000 #1st colmun is arbitary - we'll leave it H, 2nd is x vavlue, 3rd value is y value and 4th column is z value.
H 0.000000 0.000000 1.000000
H 0.000000 0.000000 2.000000
H 0.000000 0.000000 3.000000
これまでのところ、
import random
numpoints=512
L=20
while len(points)<numpoints:
p = (random.randint(0, L), random.randint(0, L), random.randint(0, L))
if p not in points:
points.add(p)
これにより、(x、y、z)座標が生成されますが、私が抱えている問題は、それをテキストファイルに入れることです。
私はこのようなものから始めましたが、いくつかの助けが必要です:
with open("question1.xyz","w") as file:
file.write("\ncomment goes here\n") #this is for the 2nd line in my xyz file
while len(points)<numpoints:
p = (random.randint(0, L), random.randint(0, L), random.randint(0, L))
if p not in points:
points.add(p)
file.write('H %f %f %f\n' % (x, y, z))
これは私が出力を作成しなければならないものであり、行数は最初の行に配置されますが、何らかの理由でファイルがエミュレートされません
#this will put the number of particles as the first line and generate an output file
with open("question2.xyz") as infile:
with open("q2Output.xyz","w") as outfile:
for i,line in enumerate(infile):
if i==0:
outfile.write('%f\n'%counter)
else:
outfile.write(line)
カウンターが存在しないためにわかりましたが、もっと効率的な方法はありますか?