코딩 스쿨에 오신것을 환영합니다~~

질의응답 게시판

 
예제 7-7
고 * 웅 | 2019-02-16

214페이지 예제 7-7에서 3번부분을 맨 마지막에 해봤더니 실행결과 2번째줄이 바뀌어서 나오는데 왜 그렇게 나오는 건가요??

  • 관 * 자
  • 2019-02-18 (10:07)
질문하신 내용은 다음과 같다는 말씀이신거지요?

def isPrimeNumber(num) :
      prime_yes = True 
      for i in range(2, num) : 
            if num % i == 0 : 
                  prime_yes = False 
                  break
      return prime_yes
      
n = int(input('n값을 입력해 주세요 : '))

for a in range(2, n+1) :
      is_prime = isPrimeNumber(a)
      if is_prime :
            print(a, end=' ')
      

print('2 ~ %d까지의 정수 중 소수 :' % n, end = ' ')  

실행결과 :

n값을 입력해 주세요 : 10
2 3 5 7 2 ~ 10까지의 정수 중 소수 : 
>>> 
  • 관 * 자
  • 2019-02-18 (10:14)
아마 이부분에서 헷갈리신 것 같아요.

def isPrimeNumber(num) :
    ...

위의 def로 정의된 isPrimeNumber(num)는 프로그램 실행 시 먼저 실행되지 않습니다.
함수 정의는 함수가 호출이 되었을 때만 실행됩니다.
따라서 프로그램 실행 순서는 다음과 같습니다.

1. n = int(input('n값을 입력해 주세요 : ')) 

2. for a in range(2, n+1) : 
      is_prime = isPrimeNumber(a) 
      if is_prime : 
            print(a, end=' ') 

    여기서  isPrimeNumber(a)에 의해 함수 호출이 일어나서 정의된 함수가 실행된 다음 반환 값 prime_yes 가 얻어지고 print(a, end=' ')에 의해 소수가 출력됩니다.

3. print('2 ~ %d까지의 정수 중 소수 :' % n, end = ' ')   

  이 부분에 의해 입력된 정수가 실행되니 실행결과와 같은 결과가 나오게 됩니다.

책 198, 199쪽의 함수로 사용될 때에 실행 순서를 다시 한번 살펴보시기 바랍니다.^^