2017-03-21 2 views
0

안녕하세요 아래 표시된 항목을 인쇄하려고합니다. 한 번만 인쇄하면되지만 인쇄 문은 for 루프 안에 있기 때문에 100 번 인쇄됩니다. 내부의 값이 for 루프에 의존하기 때문에 print 문을 사용할 수 없습니다. 그 값을 한 번만 인쇄하는 방법에 대한 아이디어가 있습니까?for 루프의 한 번만 인쇄합니다.

def Input_Q_bounds (lower,upper): 
delta_x = .1 

#since there are 100 iterations 
J=np.zeros(101) 
for i in range(101) : 
    Q_i=(i*delta_x)+(delta_x/2) 
    if lower <=Q_i<= upper : 
     Q =1 
    else : 
     Q=0 
    #now fill the matrix 
    J[i]=(Q+(9.5*(J[i-1])))/10.5 
    J_analytical = Q*(np.exp(upper-10)+(np.exp(lower-10)) 

    print(J_analytical) 
    print(J[100]) 
+1

어떻게 값은 for 루프에 의존? 첫 번째 인쇄물에 대해 예상 출력을 얻는다면 루프가 필요하지 않습니다. 그냥 i = 0 – TerryA

+1

print 문을 사용하여 if-else 조건을 추가 할 수 있습니다. – monster

+0

루프의 끝에서 최종 값만 인쇄 하시겠습니까? 그렇다면 당신은 그들을 꺼낼 수 있습니다. –

답변

1

바로 위의 라인에 if i == 100:를 넣어 인쇄

+0

좋은 아이디어! 나는 이것을 시도했지만 나에게이 구문 오류를 준다. 왜 그런지 알아? 파일 ""줄 18 if i == 100 : ^ 구문 오류 : 잘못된 구문 – Katey

+0

고맙습니다. – Katey

+1

나는이 대답이 끝나면 루프 바깥 쪽 인쇄보다 왜 선택되어 있는지 짐작할 수 없다. 지속적으로 확인해야 할 필요는 없습니다. "루프 끝 부분에 있습니까?" –

1

옵션 1 : 다음과 같은 else 조건을 사용할 수 있습니다.

def Input_Q_bounds(lower, upper): 
    delta_x = .1 

    # since there are 100 iterations 
    J = np.zeros(101) 
    for i in range(101): 
     Q_i = (i * delta_x) + (delta_x/2) 
     if lower <= Q_i <= upper: 
      Q = 1 
     else: 
      Q = 0 
     # now fill the matrix 
     J[i] = (Q + (9.5 * (J[i - 1])))/10.5 
     J_analytical = Q * (np.exp(upper - 10) + (np.exp(lower - 10)) 
    else: 
     print(J_analytical) 
     print(J[100]) 

if __name__ == "__main__": 
    Input_Q_bounds(lower, upper) 

옵션 2 : 다음 용액은 전역 변수를

J_analytical = -1 
J = [] 

def Input_Q_bounds(lower, upper): 
    global J 
    global J_analytical 
    delta_x = .1 

    # since there are 100 iterations 
    J = np.zeros(101) 
    for i in range(101): 
     Q_i = (i * delta_x) + (delta_x/2) 
     if lower <= Q_i <= upper: 
      Q = 1 
     else: 
      Q = 0 
     # now fill the matrix 
     J[i] = (Q + (9.5 * (J[i - 1])))/10.5 
     J_analytical = Q * (np.exp(upper - 10) + (np.exp(lower - 10)) 


if __name__ == "__main__": 
    Input_Q_bounds(lower, upper) 
    print(J[100]) 
    print(J_analytical) 

옵션 3을 사용하는 것이다 : 함수의 값을 반환.

def Input_Q_bounds(lower, upper): 
    delta_x = .1 

    # since there are 100 iterations 
    J = np.zeros(101) 
    for i in range(101): 
     Q_i = (i * delta_x) + (delta_x/2) 
     if lower <= Q_i <= upper: 
      Q = 1 
     else: 
      Q = 0 
     # now fill the matrix 
     J[i] = (Q + (9.5 * (J[i - 1])))/10.5 
     J_analytical = Q * (np.exp(upper - 10) + (np.exp(lower - 10)) 
    return J[100], J_analytical 

if __name__ == "__main__": 
    Input_Q_bounds(lower, upper) 
+0

리턴 기술로서의 글로벌 변수는 일반적으로 나쁜 습관입니다. – Prune

+0

@Prune 사실입니다. 나는이 값을 반환하는 편집 할 수 있습니다 믿습니다. – Varad

관련 문제