Ch 04. 반복문(for, while) 다루기 [파이썬 고등 수학 정복]

지루한 반복 계산은 이제 그만! 파이썬 for, while 루프로 시그마, 팩토리얼, 약수 찾기 등을 쉽게 해결하세요. 수학 공부 효율 UP!

Part 1: 수학 공부를 위한 파이썬 첫걸음

Chapter 4: 반복 작업을 시키자 (Let's Repeat Tasks - Loops)

학습 목표

  • 반복적인 작업을 자동화하는 반복문의 필요성을 이해한다.
  • for 반복문과 range() 함수를 사용하여 정해진 횟수만큼 코드를 반복 실행할 수 있다.
  • while 반복문을 사용하여 특정 조건이 만족되는 동안 코드를 반복 실행할 수 있다.
  • 반복문을 이용하여 합계 계산, 카운팅, 패턴 출력 등 다양한 작업을 수행할 수 있다.
  • (선택) break 문을 사용하여 반복문을 중간에 빠져나오는 방법을 이해한다.

 

1. 지루한 반복은 컴퓨터에게! 반복문

"안녕하세요"를 100번 출력하거나, 1부터 1000까지 숫자를 모두 더하는 작업을 직접 손으로 하거나 print() 문을 1000번 쓰는 것은 매우 비효율적이고 지루한 일입니다. 프로그래밍에서는 이렇게 동일하거나 유사한 작업을 여러 번 반복해야 할 때 반복문(Loop)을 사용합니다. 반복문을 사용하면 몇 줄의 코드로 수백, 수천 번의 작업을 컴퓨터에게 시킬 수 있습니다.

파이썬에는 크게 두 가지 종류의 반복문이 있습니다.

  • for 반복문: 정해진 횟수만큼 또는 리스트나 문자열 같은 자료구조의 모든 항목에 대해 반복할 때 주로 사용됩니다. (예: "100번 반복해!", "리스트의 모든 학생 이름을 출력해!")
  • while 반복문: 특정 조건이 참(True)인 동안 계속해서 반복할 때 사용됩니다. 반복 횟수가 미리 정해져 있지 않을 때 유용합니다. (예: "사용자가 '종료'를 입력할 때까지 계속 물어봐!")

 

2. 정해진 횟수만큼 반복: for 반복문과 range()

for 반복문은 특정 작업(코드 블록)을 정해진 범위 또는 컬렉션의 각 항목에 대해 실행합니다. 가장 흔하게는 range() 함수와 함께 사용하여 특정 횟수만큼 반복합니다.

for 변수 in 반복가능한객체: # 반복 실행될 코드 (반드시 들여쓰기!)

  • 반복가능한객체(iterable): 리스트, 튜플, 문자열, range() 객체 등 여러 개의 항목을 포함하는 객체입니다.
  • 변수: 반복이 실행될 때마다 반복가능한객체의 항목을 하나씩 차례대로 받아 저장하는 변수입니다.
  • 콜론(:)과 들여쓰기는 if 문과 동일하게 필수입니다.

range() 함수: 연속된 숫자 범위를 만들어주는 함수입니다. for 문과 함께 쓰여 특정 횟수 반복을 쉽게 구현합니다.

  • range(stop): 0부터 stop - 1 까지의 정수를 생성합니다. (총 stop 번 반복)
  • range(start, stop): start부터 stop - 1 까지의 정수를 생성합니다.
  • range(start, stop, step): start부터 stop - 1 까지 step 간격으로 정수를 생성합니다.
# 1. 0부터 4까지 출력 (총 5번 반복)
print("range(5):")
for i in range(5):
  print(i) # i는 0, 1, 2, 3, 4 순서로 변함

print("-" * 10)

# 2. 1부터 5까지 출력
print("range(1, 6):")
for num in range(1, 6):
  print(num) # num은 1, 2, 3, 4, 5 순서로 변함

print("-" * 10)

# 3. 2부터 10까지 짝수만 출력 (2씩 증가)
print("range(2, 11, 2):")
for even_num in range(2, 11, 2):
  print(even_num) # even_num은 2, 4, 6, 8, 10 순서로 변함

print("-" * 10)

# 4. "Python" 다섯 번 출력하기
for _ in range(5): # 반복 변수가 필요 없을 때는 밑줄(_)을 사용하기도 함
    print("Python")

반복문을 이용한 계산: 합계 구하기

반복문을 사용하면 여러 숫자의 합계를 쉽게 계산할 수 있습니다. 합계를 저장할 변수를 0으로 초기화하고, 반복문 안에서 각 숫자를 더해주면 됩니다.

# 1부터 10까지의 합 계산하기 (Σ k, k=1 to 10)
total_sum = 0 # 합계를 저장할 변수 초기화
for k in range(1, 11): # k는 1, 2, ..., 10
  total_sum = total_sum + k # 기존 합계에 현재 k 값을 더함
  # print(f"k={k}, 현재 합계={total_sum}") # 중간 과정 확인용

print("1부터 10까지의 합:", total_sum) # 최종 결과: 55

 

3. 조건이 만족되는 동안 반복: while 반복문

while 반복문은 주어진 조건식이 참(True)인 동안 코드 블록을 계속해서 반복 실행합니다. 조건식이 거짓(False)이 되면 반복을 멈춥니다.

while 조건식: # 조건식이 참인 동안 반복 실행될 코드 (반드시 들여쓰기!) # 주의: 반복문 안에서 조건식이 언젠가 거짓이 되도록 상태를 변경해야 함!

만약 while 문 안에서 조건식이 계속 참이 되도록 내버려두면 프로그램이 끝나지 않는 무한 루프(Infinite Loop)에 빠질 수 있으니 주의해야 합니다.

# 1부터 5까지 출력하기 (while 문 사용)
count = 1 # 시작 값
while count <= 5: # count가 5보다 작거나 같은 동안 반복
  print(count)
  count = count + 1 # count 값을 1 증가시킴 (이 부분이 없으면 무한 루프!)

print("반복 종료")

print("-" * 10)

# 'q'를 입력할 때까지 사용자 입력 받기
user_input = ""
while user_input != "q": # 입력이 'q'가 아닌 동안 반복
    user_input = input("계속하려면 아무 키나 누르고, 종료하려면 'q'를 입력하세요: ")
    print(f"입력하신 내용: {user_input}")

print("프로그램을 종료합니다.")

 

4. 반복문 제어하기: break (선택 사항)

때로는 반복문 실행 중에 특정 조건이 만족되면 즉시 반복을 중단하고 싶을 때가 있습니다. 이때 break 문을 사용합니다. break 문이 실행되면 가장 가까운 반복문(for 또는 while)을 즉시 빠져나갑니다.

# 1부터 100까지 더하는 중 합계가 500을 넘으면 중단하기
total_sum = 0
for i in range(1, 101):
    total_sum = total_sum + i
    print(f"{i}까지 더한 합계: {total_sum}")
    if total_sum > 500:
        print("합계가 500을 넘었으므로 중단합니다.")
        break # 반복문 즉시 종료

print(f"최종 합계: {total_sum}") # break 시점의 합계가 출력됨

# (참고) `continue` 문: 현재 반복만 건너뛰고 다음 반복으로 넘어감
# 1부터 10까지 숫자 중 짝수만 출력 (홀수는 건너뛰기)
for i in range(1, 11):
    if i % 2 != 0: # 홀수이면
        continue   # 아래 print 문을 실행하지 않고 다음 반복으로 넘어감
    print(i)

수학 문제에 적용하기

반복문은 다양한 수학적 계산과 시뮬레이션에 활용됩니다.

  • 시그마(Σ) 계산: 특정 규칙을 가지는 수열의 합 계산 (등차/등비수열의 합 등).

    # 예: Σ (k^2 + 1), k=1 to 5
    sum_sigma = 0
    for k in range(1, 6):
        term = k**2 + 1
        sum_sigma += term # += 는 sum_sigma = sum_sigma + term 과 같음
    print(f"Σ (k^2 + 1), k=1 to 5 = {sum_sigma}") # (2+5+10+17+26) = 60
    
  • 팩토리얼(Factorial) 계산: n! = n * (n-1) * ... * 2 * 1

    n = 5
    factorial = 1
    for i in range(1, n + 1):
        factorial *= i # *= 는 factorial = factorial * i 와 같음
    print(f"{n}! = {factorial}") # 5! = 120
    
  • 약수(Divisor) 찾기: 어떤 수 N을 1부터 N까지의 수로 나누어 나머지가 0인 수를 찾기.

    N = 12
    divisors = [] # 약수를 저장할 리스트 (다음 장에서 배움)
    print(f"{N}의 약수:", end=" ") # end=" " 는 줄바꿈 대신 공백 출력
    for i in range(1, N + 1):
        if N % i == 0:
            print(i, end=" ") # 약수 출력
            # divisors.append(i) # 리스트에 추가 (다음 장)
    print() # 줄바꿈
    
  • 소수(Prime Number) 판별: 1과 자기 자신 외에는 약수를 갖지 않는 수 판별 (2부터 N-1까지 나누어 떨어지는 수가 없는지 확인).

    num_to_check = 13
    is_prime = True # 일단 소수라고 가정
    if num_to_check < 2: # 2 미만은 소수 아님
        is_prime = False
    else:
        for i in range(2, num_to_check): # 2부터 num_to_check-1 까지
            if num_to_check % i == 0: # 나누어 떨어지면
                is_prime = False # 소수 아님
                break # 더 검사할 필요 없음
    if is_prime:
        print(f"{num_to_check}는 소수입니다.")
    else:
        print(f"{num_to_check}는 소수가 아닙니다.")
    
  • 수열의 항 생성: 등차수열, 등비수열, 피보나치 수열 등 점화식으로 정의된 수열의 항들을 차례대로 계산. (Chapter 10에서 자세히)

직접 해보기 (Follow Along Exercise)

사용자로부터 양의 정수 N을 입력받아, 1부터 N까지의 모든 홀수의 합을 계산하여 출력하는 프로그램을 for 반복문을 사용하여 작성해보세요.

# 직접 코드를 작성하고 실행해보세요!
n_str = input("양의 정수 N을 입력하세요: ")
N = int(n_str)

odd_sum = 0
for i in range(1, N + 1):
    if i % 2 != 0: # 홀수이면
        odd_sum = odd_sum + i

print(f"1부터 {N}까지 홀수의 합: {odd_sum}")

# 다른 방법: range의 step 활용
# odd_sum_alt = 0
# for i in range(1, N + 1, 2): # 1부터 N까지 2씩 증가 (홀수만 선택)
#     odd_sum_alt += i
# print(f"1부터 {N}까지 홀수의 합 (다른 방법): {odd_sum_alt}")

 

연습 문제

  1. while 반복문을 사용하여, 10부터 1까지 숫자를 거꾸로 출력하는 프로그램을 작성하세요.
  2. 구구단 중 7단을 출력하는 프로그램을 for 반복문을 사용하여 작성하세요. (예: "7 x 1 = 7", "7 x 2 = 14", ..., "7 x 9 = 63")
  3. 사용자로부터 양의 정수 하나를 입력받아, 그 수의 팩토리얼(n!)을 계산하여 출력하는 프로그램을 작성하세요.
  4. 1부터 100까지의 숫자 중에서 3의 배수이면서 동시에 5의 배수인 숫자들을 모두 출력하는 프로그램을 작성하세요.

 

COMMENTS

이름

건강,21,경제,8,교통수단,6,선거,2,세금,1,시니어,1,음식,9,정부,7,집안관리,5,평생교육,15,software,11,
ltr
item
아이스콘.day: Ch 04. 반복문(for, while) 다루기 [파이썬 고등 수학 정복]
Ch 04. 반복문(for, while) 다루기 [파이썬 고등 수학 정복]
지루한 반복 계산은 이제 그만! 파이썬 for, while 루프로 시그마, 팩토리얼, 약수 찾기 등을 쉽게 해결하세요. 수학 공부 효율 UP!
아이스콘.day
http://www.icecone.day/2025/04/python-high-school-math-ch04-loops-for-while.html
http://www.icecone.day/
http://www.icecone.day/
http://www.icecone.day/2025/04/python-high-school-math-ch04-loops-for-while.html
true
7981093494699837537
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE Search in 아이스콘.day ALL POSTS Not found any post match with your request Back Home 일요일 월요일 화요일 수요일 목요일 금요일 토요일 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월 Jan Feb Mar Apr 5월 Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago 어제 $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy 목차