我在一个函数中创建了一个文本文件。对于学校项目,我必须获取该文本文件,并使用相同的数据放入另一个文本文件“distance”,然后将变量“equation”附加到前一个文本文件中每行的末尾。但是,我仍然坚持如何在第一个函数中获取x,y,z变量,并在第二个函数中使用它们而不使用全局变量?救命!
def readast():
astlist=[]
outFileA=open('asteroids.txt','w')
letter=65
size_of_array=15
astlist=[]*size_of_array
for i in range(0,size_of_array):
x=random.randint(1,1000)
y=random.randint(1,1000)
z=random.randint(1,1000)
outFileA.write ('\n'+chr(letter) + '\t' +(str(x)) + '\t' + (str(y)) +'\t' +(str(z)))
letter= letter+ 1
return x,y,z
outFileA.close()
def distance():
outFileA=open('asteroids.txt','r')
outFileD=open('distance.txt','w')
x= (x**2)
y= (y**2) #these three variables I need to pull from readast
z= (z**2)
equation=math.sqrt(x+y+z)
for row in range(len(outfileA)):
x,y,z=outFileA[row]
outFileD.append(equation)
outFileD.close()
答案 0 :(得分:1)
如果您可以修改功能签名,请参数化distance
:
def distance(x, y, z):
然后当您从readast
致电main
时,请抓住返回值:
x, y, z = readast()
x
致电y
时,并传递z
,distance
和main
作为参数:
distance(x, y, z)
请注意,有几个名为x
的本地变量。您没有在多个函数之间共享局部变量;只有它的价值。函数调用将参数的值复制到参数中,然后计算它们的返回值。
答案 1 :(得分:1)
你在第一个函数中返回(x,y,z),由main函数调用? 确保你的main函数将元组分配给某个东西,然后将它作为参数传递给第二个函数...
简化为:
def distance(x,y,z):
....
def main():
...
(x ,y ,z) = readast()
...
distance(x,y,z)
答案 2 :(得分:0)
我认为最简单的方法是通过函数参数
def distance(_x, _y, _z):
outFileA=open('asteroids.txt','r')
outFileD=open('distance.txt','w')
x= (_x**2)
y= (_y**2) #these three variables I need to pull from readast
z= (_z**2)
...
但我认为你需要再考虑解决方案,你可以制作这样的函数:
def equation(x, y,z):
return math.sqrt(math.pow(x,2)+math.pow(y,2)+math.pow(z,2))
然后在右边第一个文件时调用它
astlist=[]*size_of_array
for i in range(0,size_of_array):
x=random.randint(1,1000)
y=random.randint(1,1000)
z=random.randint(1,1000)
outFileA.write ('\n'+chr(letter) + '\t' +str(x)+ '\t' +str(y)+'\t' +str(z)+ '\t' +str(equation(x,y,z)))
letter= letter+ 1
outFileA.close()