Python for 반복문의 포괄적 이해와 활용

For 반복문의 정의 및 기본 원리

  • 정의 및 용도: for 반복문은 공학용 컴퓨터 프로그래밍(Computer Programming for Engineers)에서 특정 명령 세트를 제한된 횟수만큼 반복하도록 유도하는 제어 구조입니다.

  • 주요 특징:

    • 일련의 값(Sequence)을 순회하며 반복 작업을 수행합니다.

    • 시퀀스의 각 값은 반복 변수(ii 등)에 차례대로 할당됩니다.

Python의 for 루프 문법 및 작동 방식

  • 기본 구문: python for i in sequence: statement statement     

  • 시퀀스의 종류: for 문에서 순회할 수 있는 시퀀스는 다음과 같은 형태를 가집니다.

    • range(): 등차수열 형태의 숫자 모음.

    • 문자열(String): 문자들의 나열.

    • 리스트(List): 항목들의 순차적 모음.

    • 파일 객체(File object): 파일의 내용을 한 줄씩 처리.

range() 함수를 활용한 반복 제어

  • 함수 정의: range() 함수는 산술 진행(Arithmetic Progression)에 따른 일련의 정수들을 생성합니다.

  • 매개변수의 개수에 따른 동작:

    • 인자 1개 (range(stop)range(stop)): 00부터 stop−1stop - 1까지 11씩 증가.

      • 예: list(range(5)) 는 [0, 1, 2, 3, 4] 를 생성합니다.

    • 인자 2개 (range(start,stop)range(start, stop)): startstart부터 stop−1stop - 1까지 11씩 증가.

      • 예: list(range(5, 10)) 는 [5, 6, 7, 8, 9] 를 생성합니다.

    • 인자 3개 (range(start,stop,step)range(start, stop, step)): startstart부터 시작하여 stopstop에 도달하기 전까지 stepstep만큼 증가 또는 감소.

      • 예: list(range(5, 10, 2)) 는 [5, 7, 9] 를 생성합니다.

      • 예: list(range(10, 5, -1)) 는 [10, 9, 8, 7, 6] 를 생성합니다.

  • 증감 로직: 세 번째 인자인 stepstep은 반복마다 변수의 값을 얼마나 변화시킬지 결정합니다. 양수면 증가, 음수면 감소합니다.

range() 활용 예시 및 시각화

  • 단순 텍스트 반복 출력: 'hello'를 55번 출력하는 코드. python for i in range(5): print('hello')     

  • 반복 변수 확인: 각 반복에서 변수 ii에 할당된 값을 함께 출력. python for i in range(5): print('hello', i)     

    • 실행 결과:

      • hello 0

      • hello 1

      • hello 2

      • hello 3

      • hello 4

문자열(String)을 이용한 반복

  • 작동 방식: 반복문이 실행되면서 변수 ii는 문자열 내의 각 문자를 하나씩 순차적으로 할당받습니다.

  • 예시 1: 단순 출력python for i in 'Bao': print(i)     

    • 결과: B, a, o 가 각각 한 줄씩 출력됩니다.

  • 예시 2: 단어 뒤집기(Reverse a word)

    • 사용자로부터 단어를 입력받아 거꾸로 출력하는 프로그램. python word = input('Enter a word: ') rWord = '' for i in word: rWord = i + rWord print(rWord)     

    • 입력이 'zeus'인 경우 출력은 'suez'가 됩니다.

리스트(List)를 이용한 반복

  • 작동 방식: 변수 ii는 리스트 내의 각 항목(Item)을 차례대로 할당받습니다.

  • 예시: BTS 멤버 인사 프로그램python bts = ['V', 'Suga', 'Jin', 'Jungkook', 'RM', 'Jimin', 'J-Hope'] for i in bts: print('hello', i)     

    • 결과: hello V, hello Suga … hello J-Hope 순으로 출력됩니다.

Conditional Statement(if)와의 결합

  • 개요: 반복문 내부에 조건문을 사용하여 특정 조건을 만족하는 데이터만 처리할 수 있습니다.

  • 예제: 리스트 내 짝수의 합 구하기

    • 숫자 리스트 nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]에서 짝수(n%2==0n \% 2 == 0)들의 합(ss)을 구하는 코드. python nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] s = 0 for n in nums: if (n % 2) == 0: s = s + n print(s) # 출력 결과: 30     

리스트 값 업데이트 (Updating List Values)

  • 원칙: 리스트의 각 항목 값을 수정하려 할 때는 단순 값이 아닌 요소의 인덱스(Index)에 접근해야 합니다. 따라서 range()와 len() 함수를 조합하여 사용해야 합니다.

  • While 문과 For 문의 비교 (각 요소에 11 더하기):

    • while 활용: python nums = [1, 2, 3, 4, 5] i = 0 while i < len(nums): nums[i] = nums[i] + 1 i = i + 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

    • for 활용 (권장): python nums = [1, 2, 3, 4, 5] for i in range(len(nums)): nums[i] = nums[i] + 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

  • 응용 예제: 월 이름을 약어로 변경

    • 열두 달의 전체 이름을 든 리스트를 앞의 33글자만 남기고 수정합니다. python m = ['January', 'February', 'March', 'April', 'May', 'June', ...] for i in range(len(m)): m[i] = m[i][:3] print(m) &nbsp;&nbsp;&nbsp;&nbsp;

    • 출력 결과: ['Jan', 'Feb', 'Mar', ..., 'Dec']

중첩 리스트(Nested List)의 처리

  • 정의: 리스트의 요소가 또 다른 리스트인 경우입니다.

  • 예제: 리스트 쌍의 합계 계산

    • pairs = [[1, 2], [3, 4], [5, 6], ...]와 같은 리스트에서 모든 내부 숫자의 합을 구하는 코드. python s = 0 for pair in pairs: s = s + pair[0] + pair[1] print(s) &nbsp;&nbsp;&nbsp;&nbsp;

  • 연습 문제: 판다(Panda) 가족 정보 출력

    • 가족 구성원 이름과 탄생 연도가 있는 중첩 리스트를 활용하여 문장을 생성합니다.

    • 입력 데이터: family = [['Le Bao', 2012], ['Ai Bao', 2013], ['Fu Bao', 2020], ...]

    • 기대 출력:

      • Le Bao was born in 2012.

      • Ai Bao was born in 2013.

      • …

요약 및 정리

  • for 루프는 정해진 횟수, 리스트, 또는 문자열을 순회하는 데 사용됩니다.

  • range(start, stop, step) 함수는 세 가지 매개변수를 통해 숫자 범위를 정교하게 제어합니다.

  • 리스트의 값을 직접 업데이트하고자 할 때는 반드시 range(len(list)) 형식을 사용하여 인덱스를 통해 값에 접근해야 합니다.