2014-11-22 4 views
0

하나의 기능으로 텍스트 파일을 만들었습니다. 학교 프로젝트의 경우 해당 텍스트 파일을 가져와 같은 텍스트를 다른 텍스트 파일 인 "거리"에 넣은 다음 이전 텍스트 파일의 각 행 끝에 "방정식"변수를 추가해야합니다. 그러나, 나는 첫 번째 함수에서 x, y, z 변수를 취할 수있는 방법을 고집하고 전역 변수를 사용하지 않고 두 번째 함수에서 사용합니다. 도움! 당신이 main에서 readast를 호출 할 때 반환 값 잡고, 다음파이썬에서 한 함수의 지역 변수를 다른 함수의 지역 변수를 사용합니까?

def distance(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

당신은 당신의 자신의'거리를 할 필요가 없다()'계산 :

간소화 ... 다음 두 번째 함수에 매개 변수로 전달, 주요 기능은 무엇인가에 튜플을 할당했는지 확인 , 그냥 ['math.hypot()'] (https://docs.python.org/2/library/math.html?highlight=hypot#math.hypot) 함수를 사용하십시오. – martineau

+0

'distance' 함수는 언제 사용됩니까? 그것은'readast'에서 호출됩니까? – sleeparrow

+0

@Adamantite에서 main 함수에서 'distance'함수가 호출됩니다.이 함수는 여기에 표시되지 않습니다. 교수님은 각 함수가 단 한 가지만 수행해야한다고 말합니다. 그렇지 않으면 append를 'readast'와 동일한 함수에 넣을 것입니다. distance 함수는 asteroids.txt와 같은 값을 가진 distance.txt라는 새로운 텍스트 파일을 만든 다음 distance.txt에 더 많은 값을 추가하면 유용합니다. – Jackie

답변

1

, distance 매개 변수화

x, y, z = readast()

및 패스 x,x 이름 여러 지역 변수가 있다는 것을

distance(x, y, z)

참고 : main에서 distance를 호출 인수로및 z. 여러 함수간에 로컬 변수를 공유하지 않습니다. 그것의 가치 만. 함수 호출은 인수 값을 매개 변수로 복사 한 다음 반환 값으로 평가합니다.

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() 
1

첫 번째 파일에서 (x, y, z)를 반환합니다. main 함수에 의해 호출됩니까?

def distance(x,y,z): 

    .... 



def main(): 

    ... 
    (x ,y ,z) = readast() 
    ... 

    distance(x,y,z) 
관련 문제