一个函数使用xyz,然后我在另一个函数中调用这些变量。函数距离应该取readast的每个xyz,然后取每行的平方、和和和平方根。ex500600700(将每个数字平方,加起来,然后求和的平方根),它将得到结果,并在行结束后显示它。但是,我在远处的数字只是readast函数中的最后一行数字。。。知道为什么吗?在
def readast():
astlist=open('asteroids.txt','w')
letter=65
for line in range(15):
x=random.randint(1,1000)
y=random.randint(1,1000)
z=random.randint(1,1000)
astlist.write(('\n')+chr(letter)+('\t')+(str(x))+('\t')+(str(y))+('\t')+(str(z)))
letter=letter+1
return astlist,x,y,z
astlist.close()
def distance(astlist,x,y,z):
distlist=open('distance.txt','w')
letter=65
for line in range(15):
x1=x**2
y1=y**2
z1=z**2
equation=math.sqrt(x1+y1+z1)
distlist.write(('\n')+chr(letter)+('\t')+(str(x))+('\t')+(str(y))+('\t')+(str(z)+('\t')+(str(equation))))
letter=letter+1
return distlist
distlist.close()
我看到你的功能是:
readast()
实际上,打开一个文件进行编写,计算15颗小行星的随机坐标,并将每个小行星写入文件,然后返回file对象和最后一组x、y、z坐标。有一行关闭了文件,但它永远不会运行,因为您已经从函数返回了。在
距离():
计算与输入参数的距离,并将一行写入其他文件。它不处理您给它的astlist参数。这将计算15条类似的行,因为x、y、z都基于一组输入参数。在
我不认为这是你想要的。在
问题的简短回答是从readast()返回一批x、y、z,然后在distance()中迭代这些相同的值,而不改变它们15次。在
你似乎对文件和列表有点困惑(也许?)。我在这里都做过。open()调用在文件系统中打开一个文件并向其中写入文本。你这样实例化的列表:一些\-list=[]或者其他的\-list=[1,2,3]或者其他方式。。。写入文件时,文件中的当前位置将移到末尾。您可以使用seek()将当前位置移回文件中,但列表更好,除非您有数百万个这样的东西。如果您不需要这些文件,那么您可以注释掉引用它们的行,因为我们使用这里的列表在函数之间进行通信。希望这能给你指明正确的方向。。祝你好运。在
相关问题 更多 >
编程相关推荐