파이썬 프로그래밍: 제어 구조, 다차원 리스트 및 파일 입출력 종합 학습 노트

제어 구조 및 조건문

  • 제어 구조(Control Structure)의 개념

    • 제어 구조란 컴퓨터가 작업을 처리하는 순서를 결정하는 구조를 의미합니다.

    • 대표적인 3대 제어 구조로는 순차 구조, 선택 구조, 반복 구조가 존재하며, 이들을 중첩하여 복잡한 프로그램을 작성할 수 있습니다.

    • 순차 구조: 위에서부터 아래 방향으로 코드를 순서대로 실행하는 구조입니다.

    • 선택 구조: 주어진 조건의 참/거짓 여부에 따라 특정 코드 블록을 선택하여 실행하는 구조입니다 (if ~ else 문, if ~ elif ~ else 문).

    • 반복 구조: 조건이 만족되는 동안 특정 코드 블록을 반복적으로 실행하는 구조입니다 (for 문, while 문).

  • 파이썬 조건문 (if 문)의 기본 개념 및 규칙

    • 조건문은 특정 조건의 성립 여부에 따라 서로 다른 명령을 실행하고자 할 때 사용합니다.

    • 조건식의 평가 결과는 오직 참(True) 또는 거짓(False) 두 가지 조건값만 가집니다.

    • 문법적 규칙으로 if, else, elif 문장 끝에는 반드시 콜론(:)을 붙여야 합니다.

    • 파이썬은 블록 구분을 들여쓰기(Indentation)로 수행하므로 들여쓰기가 매우 중요합니다.

    • if 문 다음 줄의 실행할 문장은 반드시 들여쓰기를 적용해야 합니다.

    • 들여쓰기는 Tab 키를 1번 누르거나 Spacebar를 4칸 입력하는 것을 권장합니다.

    • 동일한 블록 내의 명령문들은 반드시 동일한 들여쓰기 깊이를 유지해야 합니다.

    • 대화형 모드(Interactive Mode)에서는 실행할 문장 작성을 마친 후 Enter 키를 2번 눌러야 조건문 작성이 완료된 것으로 간주합니다.

  • 조건문의 유형별 구조 및 특징

    • 단일 if 구조

    • 조건식이 참이면 지정된 문장을 실행하고, 거짓이면 아무것도 실행하지 않고 다음 문장으로 넘어갑니다.

    • 구문 구조: python if 조건식: 문장 1       

    • if ~ else 구조

    • 조건식이 참일 때 실행할 문장과 거짓일 때 실행할 문장을 서로 다르게 설정합니다.

    • 조건식이 참이면 문장 1을 실행하고, 거짓이면 문장 2를 실행합니다.

    • 구문 구조: python if 조건식: 문장 1 else: 문장 2       

    • if ~ elif ~ else 구조

    • 검사해야 할 조건이 2개 이상일 때 활용하는 다중 선택 구조입니다.

    • 조건식 1이 참이면 문장 1을 실행하고, 그렇지 않고 조건식 2가 참이면 문장 2를 실행하며, 모든 조건식이 거짓이면 else 블록의 문장 3을 실행합니다.

    • 조건의 개수에 따라 elif 블록을 제한 없이 여러 개 추가할 수 있습니다.

    • 구문 구조: python if 조건식 1: 문장 1 elif 조건식 2: 문장 2 else: 문장 3       


선택 구조 종류별 흐름도
  • 조건문 예제 코드 분석

    • 조건식이 거짓인 단일 if 문 예제

    a = 200
    if a < 100:
        print("100보다 작군요")
        print("거짓이므로 이 문장은 안보이겠죠?")
    print("프로그램 끝")
    &nbsp;&nbsp;&nbsp;&nbsp;```
    - 변수 aa의 값이 200200이므로 조건식 a<100a < 100은 거짓(`False`)이 됩니다. 이에 따라 들여쓰기된 4행과 5행의 `print()` 문은 실행되지 않고, 7행의 `print("프로그램 끝")`만 실행되어 출력됩니다.
    - 양방향 분기 `if ~ else` 문 예제
    

    python a = 200 if a < 100: print("100보다 작군요") else: print("100보다 크군요")     ```

    • 조건식 a<100a < 100이 거짓이므로 else: 이하에 해당하는 6행이 실행되어 "100보다 크군요"가 출력됩니다.

    • 짝수 및 홀수 판별 프로그램 예제

    • 정수를 22로 나눈 나머지 연산자(%)의 결과가 00이면 짝수, 11이면 홀수로 판별합니다. python a = int(input("정수를 입력하세요:")) if a % 2 == 0: print("짝수를 입력하셨군요.:") else: print("홀수를 입력하셨군요.:") &nbsp;&nbsp;&nbsp;&nbsp;

  • 중첩 if 문 (Nested if Statement)

    • 조건 검사 과정을 2번 이상 연속으로 진행해야 할 때 if 문 내부에 또 다른 if 문을 중첩하여 작성합니다.

    • 조건검사 예제: 수학 점수가 80 점80\,점 이상인 남학생 수 구하기

    students = [
        {"name": "철수", "gender": "남", "math_score": 85},
        {"name": "영희", "gender": "여", "math_score": 92},
        {"name": "민수", "gender": "남", "math_score": 78}
    ]  # 학생의 정보를 딕셔너리{}에 넣고 리스트[]로 관리함
    
    count = 0  # 카운트 변수 초기화
    
    for s in students:  # 반복문을 통해 조건 확인
        if s["gender"] == "남":
            if s["math_score"] >= 80:
                count += 1
    
    print(f"수학 점수가 80점 이상인 남학생은 총 {count}명입니다.")
    &nbsp;&nbsp;&nbsp;&nbsp;```
    - 성별이 "남"인 조건을 먼저 검사하고, 이를 만족할 때 수학 점수가 80 점80\,점 이상인지 2차로 검사하여 조건에 맞는 학생만 `count`를 11씩 증가시킵니다. 실행 결과 철수 1명이 조건에 적합하여 총 1 명1\,명으로 집계됩니다.
    - 학점 산출 예제 (`if ~ else` 중첩 방식과 `if ~ elif ~ else` 비교)
    - 중첩 `if ~ else` 문 구현 방식:
    

    python score = int(input("점수를 입력하세요:")) if score >= 90: print("A") else: if score >= 80: print("B") else: if score >= 70: print("C") else: if score >= 60: print("D") else: print("F") print("학점입니다.")       ```

    • if ~ elif ~ else 축약 구현 방식 (동일 로직, 가독성 향상): python score = int(input("점수를 입력하세요:")) if score >= 90: print("A") elif score >= 80: print("B") elif score >= 70: print("C") elif score >= 60: print("D") else: print("F") print("학점입니다.") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;


학점 평가 순서도

반복문

  • 반복문(Loop Statement)의 개념

    • 동일하거나 유사한 명령 문장을 반복해서 수행하도록 프로그램을 제어하는 구문입니다.

    • 파이썬에서는 대표적으로 for 문과 while 문을 제공합니다.

    • 반복문을 활용하면 동일한 문장을 10 번10\,번, 100 번100\,번, 10000 번10000\,번 이상 출력할 때 소스 코드를 중복해서 작성할 필요 없이 효율적으로 처리할 수 있습니다.

  • range() 함수 상세 분석

    • 숫자 리스트를 지정된 규칙에 따라 자동으로 생성해 주는 함수로, for 문과 조합하여 반복 횟수를 지정할 때 핵심적으로 사용됩니다.

    • 기본 형식: range(시작값, 끝값+1, 증감값)

    • 매개변수에 따른 전달값 예시 정리:

    • range(5) 또는 range(0, 5): 시작값 00, 끝값 55 미만, 증감값 11이 적용되어 0,1,2,3,40, 1, 2, 3, 4 수열 생성 (총 5개 요소).

    • range(0, 5, 2): 시작값 00, 끝값 55 미만, 증감값 22가 적용되어 0,2,40, 2, 4 수열 생성.

    • range(5, 0, -2): 시작값 55, 끝값 00 초과, 증감값 −2-2가 적용되어 5,3,15, 3, 1 감수 수열 생성.

  • for 문 상세 및 실습 예제

    • 지정된 횟수나 시퀀스 객체(리스트, 튜플, 문자열, 딕셔너리 등)의 모든 요소를 순회하면서 반복을 실행합니다.

    • 기본 구문:

    for 변수 in range(시작값, 끝값+1, 증감값):
        반복 실행할 명령문
    &nbsp;&nbsp;&nbsp;&nbsp;```
    - `for i in range(0, 3, 1):` 실행 단계 및 제어 변수 변환 과정:
    - 제 1회: 변수 `i`에 00을 대입한 후 내부 `print()` 함수 수행.
    - 제 2회: 변수 `i`에 11을 대입한 후 내부 `print()` 함수 수행.
    - 제 3회: 변수 `i`에 22를 대입한 후 내부 `print()` 함수 수행.
    - `print()` 함수 출력 옵션 제어: `print("%d" % i, end=" ")`와 같이 `end=" "` 속성을 지정하면 출력 완료 후 줄바꿈 대신 공백을 삽입하여 결과를 한 줄로 연속 출력할 수 있습니다.
    - 주요 실습 문제 풀이:
    - 문제 1: `for` 문 내부의 변수 `i`를 활용하여 11부터 55까지의 숫자를 한 칸씩 띄워서 출력하기
    

    python for i in range(1, 6, 1): print("%d" % i, end=" ") # 실행 결과: 1 2 3 4 5       ```

    • 문제 2: for 문을 사용하여 11부터 1010까지의 정수 합계 구하기

      hap, i = 0, 0
      for i in range(1, 11, 1):
          hap = hap + i
      print("1에서부터 10까지의 합계: %d" % hap)
      # 실행 결과: 1에서부터 10까지의 합계: 55
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;```
    - 문제 3: 500500과 10001000 사이에 존재하는 홀수들의 합계 구하기
    

    python hap, i = 0, 0 for i in range(500, 1001, 1): if i % 2 != 0: hap = hap + i print("500에서부터 1000까지의 홀수의 합계: %d" % hap) # 또는 range의 증감값을 2로 설정하여 구현: # for i in range(501, 1001, 2): hap += i       ```

  • 중첩 for 문 (Nested for Loop)

    • for 문 구문 내부에 또 다른 for 문이 위치하는 중첩 구조입니다.

    • 중첩 for 문의 총 실행 횟수 공식:     총 실행 횟수=바깥 for문 반복 횟수×안쪽 for문 반복 횟수\text{총 실행 횟수} = \text{바깥 for문 반복 횟수} \times \text{안쪽 for문 반복 횟수}

    • 동작 예제 코드: python for i in range(0, 3, 1): for k in range(0, 2, 1): print("프로그래밍 재미있다~ (i값: %d, k값: %d)" % (i, k)) &nbsp;&nbsp;&nbsp;&nbsp;

    • 바깥 for 문이 3회(i=0,1,2i = 0, 1, 2), 안쪽 for 문이 2회(k=0,1k = 0, 1) 반복되므로 총 3×2=6 회3 \times 2 = 6\,회 실행됩니다.

    • 구구단 전체(22단~99단) 출력 프로그램 예제: python i, k = 0, 0 for i in range(2, 10, 1): # 바깥 for 문: 단 수 (2단 ~ 9단) print("## %d단 ##" % i) for k in range(1, 10, 1): # 안쪽 for 문: 곱하는 수 (1 ~ 9) print("%d X %d = %2d" % (i, k, i * k)) print("") # 단과 단 사이에 빈 줄 출력 &nbsp;&nbsp;&nbsp;&nbsp;


구구단 중첩 반복 구도
  • while 문 상세 분석

    • 주어진 조건식이 참(True)을 만족하는 동안 블록 내의 명령들을 반복 실행하는 구문입니다.

    • 문장 끝에는 반드시 콜론(:)을 작성해야 합니다.

    • 구조 형식: python 초깃값 설정 while 조건식: 반복 실행할 명령문 조건 변경식 (증감식) &nbsp;&nbsp;&nbsp;&nbsp;

    • 실행 순서 흐름 예제: python sum = 0 while sum <= 60: sum = sum + 5 &nbsp;&nbsp;&nbsp;&nbsp;

    • sum의 초깃값 00에서 시작하여 조건 sum <= 60이 참인 동안 sum에 55를 계속 더하여, sum이 6565가 되는 순간 조건식이 거짓이 되어 반복을 종료합니다.

    • 무한 반복(Infinite Loop)과 루프 탈출 조건

    • 조건식이 항상 참으로 평가되거나, 루프 내부에서 조건 변수의 값이 업데이트되지 않는 경우 프로그램이 무한 루프 상태에 빠집니다.

    • 무한 루프 표기 예: while True: 또는 while 1:

    • 무한 루프 중지 및 탈출 방법:

      • 인터프리터 콘솔이나 IDLE 환경에서는 키보드의 Ctrl + C 키를 눌러 강제로 루프를 정지시킵니다.

      • 소스 코드 내부에서는 조건문에 break 문을 결합하여 특정 조건 달성 시 반복문을 즉시 빠져나오도록 구현합니다.


while문 순서도 및 문법 구도
  • turtle 그래픽 모듈을 활용한 반복문 실습 (디지털 아트 구현) ```python import turtle as tina

    tina.shape('turtle') tina.bgcolor('black') # 배경색 검은색 설정 tina.color('yellow') # 펜 색상 노란색 설정 tina.speed = 0 # 이동 속도를 가장 빠르게(0) 설정

    for i in range(200): tina.forward(i) # i만큼 앞으로 이동 tina.left(89) # 왼쪽으로 89도 회전

    tina.hideturtle()   ```


거북이 그래픽 결과물

다차원 데이터 구조 - 리스트

  • 리스트(List)의 개념 및 정의

    • 리스트는 다양한 자료(데이터)들을 순서대로 저장하는 파이썬의 대표적인 선형 자료구조입니다.

    • 단일 값을 저장하는 변수와 유사하지만, 하나의 리스트 변수에 여러 개의 값을 동시에 모아서 저장 및 관리할 수 있다는 차이점이 있습니다.

    • 리스트를 활용하면 많은 양의 데이터들을 한 번에 집적하여 효율적으로 처리하고 가공할 수 있습니다.

  • 리스트 선언 및 요소 접근 방법

    • 대괄호 []를 사용하여 선언하며, 생성된 리스트는 컴퓨터 메모리 내부 공간에 연속적으로 저장됩니다.

    • 파이썬 리스트는 정수, 실수, 문자열, 불리언(True/False) 등 다양한 자료형을 하나의 리스트 안에 혼합하여 저장할 수 있습니다.

    • 리스트 요소(Element): 리스트 내부를 구성하는 각각의 개별 값입니다.

    • 인덱스(Index): 리스트 요소의 위치 번호로, 첫 번째 요소는 00번 인덱스부터 시작하는 0-기반 인덱싱(Zero-based indexing)을 사용합니다.

    • 선언 및 확인 코드 예제: ```python conversion

    리스트 선언

    book = ['홍길동전', '김한국', 2022, '813.5-아22r-8', True]

    인덱스를 통한 도서 정보 확인

    print('도서명', book[0]) # 홍길동전 print('저자', book[1]) # 김한국 print('발행연도', book[2]) # 2022 print('청구기호', book[3]) # 813.5-아22r-8 print('대출가능상태', book[4]) # True     ```

  • 함수를 활용한 리스트 연속 생성

    • range() 함수와 list() 변환 함수를 조합하면 일련의 정수 요소를 갖는 리스트를 간결하게 선언할 수 있습니다.

    • 생성 방식 비교:

    • 직접 입력 방식: list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    • range() 함수 활용 방식: python num = range(0, 10, 1) list2 = list(num) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list3 = list(range(0, 10, 1)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list4 = list(range(0, 10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (증감값 1 생략) list5 = list(range(10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (시작값 0, 증감값 1 생략) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

  • 리스트 인덱스 응용 예제

    • 인덱싱을 통해 문자열 결합하여 'ACE' 출력하기:

    alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
    print(alphabet[0] + alphabet[2] + alphabet[4])
    # 실행 결과: ACE
    &nbsp;&nbsp;&nbsp;&nbsp;```
    - 11부터 1010 사이의 짝수 리스트 생성하기:
    

    python even = list(range(2, 11, 2)) print(even)

    실행 결과: [2, 4, 6, 8, 10]

        ```

  • 리스트 전용 주요 내장 함수 및 메서드 명세

    • append(값): 리스트의 가장 마지막 위치에 새로운 값을 추가합니다.

    • insert(인덱스, 값): 지정한 인덱스 위치에 새로운 값을 삽입합니다.

    • pop(인덱스): 지정한 인덱스 위치의 값을 꺼내어 반환하고, 리스트 내에서 해당 요소를 삭제합니다. 인덱스를 입력하지 않을 경우 가장 마지막 요소를 꺼내어 삭제합니다.

    • remove(값): 리스트에서 지정된 값을 찾아 삭제합니다. 동일한 값을 가진 요소가 여러 개 존재할 경우 가장 앞에 위치한 첫 번째 요소만 삭제합니다.

    • index(값): 리스트에 존재하는 특정 값의 인덱스 위치 번호를 알려줍니다.

    • count(값): 리스트에 존재하는 특정 값의 개수를 반환합니다.

    • len(리스트명): 리스트에 저장된 전체 요소의 개수(길이)를 반환합니다.

    • 메서드 종합 실습 코드: python text = ['파이썬', '정말', '재미있어'] text.append('!') # ['파이썬', '정말', '재미있어', '!'] print(text) text.pop() # '!' 꺼내서 삭제 -> ['파이썬', '정말', '재미있어'] print(text) text.remove('정말') # '정말' 삭제 -> ['파이썬', '재미있어'] print(text) text.insert(1, '쉽고') # 인덱스 1 위치에 '쉽고' 삽입 -> ['파이썬', '쉽고', '재미있어'] print(text) print(len(text)) # 요소의 개수 출력 -> 3 &nbsp;&nbsp;&nbsp;&nbsp;

  • 리스트 슬라이싱(Slicing) 연산

    • 리스트 내에서 특정 인덱스 범위를 지정하여 부분적인 요소 집합을 가져오는 연산 방식입니다.

    • 기본 형식: 리스트명[시작 인덱스 : 끝 인덱스 + 1 : 증감값]

    • 범위 설정 규칙: 시작 인덱스부터 (끝 인덱스 + 1) - 1 위치에 있는 요소까지 가져옵니다.

    • 슬라이싱 실습 및 문자열 확장 적용: ```python

    리스트 슬라이싱

    list6 = [1, 2, 3, 4, 5] print(list6[0:2+1:1]) # 인덱스 0부터 2까지 값 추출 -> [1, 2, 3]

    list7 = list(range(1, 11)) print(list7[1:10:2]) # 인덱스 1부터 9까지 2씩 증가 -> 짝수 값 [2, 4, 6, 8, 10] 추출

    문자열 슬라이싱 (리스트와 동일하게 적용 가능)

    text = '산토끼 토끼야' print(text[0:3:1]) # 인덱스 0부터 2까지 추출 -> '산토끼'     ```


슬라이싱 절단 개념도
  • 다차원 리스트 (Multidimensional List)

    • 다차원 리스트 개념: 리스트의 요소로서 또 다른 리스트를 포함하고 있는 중첩 리스트 구조입니다.

    • 2차원 리스트

    • 행(Row)과 열(Column)에 해당하는 2개의 인덱스([행][열])를 보유합니다.

    • 1차원 리스트 복수 개를 아래로 쌓아 올려 평면 격자 구조를 형성합니다.

    • 3차원 리스트

    • 면(Page), 행(Row), 열(Column)에 해당하는 3개의 인덱스([면][행][열])를 보유합니다.

    • 2차원 리스트 여러 개를 두께 방향으로 쌓아 올려 입체 구조를 형성합니다.


2차원 및 3차원 리스트 구조 비교
  • 2차원 리스트 선언 및 데이터 가공 예제: ```python

    음식점 메뉴와 가격을 저장한 2차원 리스트 선언

    food = [['라면', 5000], ['비빔밥', 8000], ['김밥', 5000]]

    인덱싱을 이용한 비빔밥 가격 출력 (1행 0열: 메뉴명, 1행 1열: 가격)

    print(f'{food[1][0]}의 가격은 {food[1][1]}원입니다.')

    새로운 데이터 추가

    add = ['오므라이스', 8500] food.append(add) print(food)

    실행 결과: [['라면', 5000], ['비빔밥', 8000], ['김밥', 5000], ['오므라이스', 8500]]

        ```

파이썬 파일 입출력

  • 파일 입출력(File I/O)의 필요성 및 주요 목적

    • 데이터 공유: 프로그램 내의 데이터를 외부 파일로 저장함으로써 다른 프로그램이나 사용자와 데이터를 상호 공유할 수 있습니다.

    • 데이터 갱신: 자주 바뀌는 데이터를 프로그램 코드 내부에 직접 하드코딩하지 않고 외부 파일로 관리하면, 소스 코드 수정 없이 파일 내용 수정만으로 프로그램의 동작 데이터를 반영할 수 있습니다.

    • 데이터 보존: 프로그램 실행 중에 생성된 휘발성 데이터를 저장 장치(SSD/HDD)에 파일로 보존하여, 프로그램이 종료된 이후에도 지속적으로 보존할 수 있습니다.

    • 대용량 데이터 처리: 주기억장치(RAM)의 용량을 초과하는 대용량 데이터의 경우, 파일을 분할 저장하거나 필요한 부분만 순차적으로 불러와 처리할 수 있습니다.

  • 파일 열기 (open() 함수)

    • 문법 구문: 파일 객체 = open('파일경로', '파일 접근방식', encoding='UTF-8')

    • 파일 객체(File Object)의 이름 지정 방식은 일반 파이썬 변수명의 작성 규칙과 동일합니다.

    • 파일 경로 확인법: 윈도우 파일 탐색기에서 파일 우클릭 후 [속성] 메뉴에서 전체 파일 경로를 확인할 수 있습니다.

    • 실행 중인 파이썬 스크립트 파일(*.py)과 열고자 하는 대상 파일이 동일한 폴더에 위치한 경우 경로를 생략하고 파일명만 작성하여 열 수 있습니다.

    • 파일 접근 방식(Mode) 모드 명세:

    • 읽기 모드 ('r'): 기존 파일의 데이터 내용을 유지하면서 데이터를 읽어옵니다. 파일 열기 시 접근 방식을 명시하지 않으면 기본값(Default)으로 지정됩니다.

    • 쓰기 모드 ('w'): 파일 내부의 기존 데이터를 모두 삭제한 후 새로운 데이터를 기록합니다. 지정한 파일이 존재하지 않을 경우 새 파일을 생성합니다.

    • 추가 모드 ('a'): 파일의 기존 데이터를 보존하면서 파일의 가장 끝부분에 새로운 데이터를 추가합니다. 지정한 파일이 존재하지 않을 경우 새 파일을 생성합니다.

  • 파일 읽기 전용 함수

    • 파일 객체를 매개로 읽기 함수를 호출하며, 파일로부터 읽어들인 모든 데이터는 문자열(str) 자료형으로 처리됩니다.

    • 파일객체.read(): 지정된 파일의 전체 내용을 한 번에 읽어 하나의 통문자열로 반환합니다.

    • 파일객체.readline(): 지정된 파일의 내용을 한 번에 한 줄씩 읽어서 문자열로 반환합니다.

    • 파일객체.readlines(): 지정된 파일의 모든 줄을 읽어 들여 각 줄을 요소로 갖는 리스트(list) 형태로 변환합니다.

  • 파일 쓰기 및 닫기 전용 함수

    • 파일객체.write(내용): 파일에 단일 문자열 데이터를 기록합니다. 만약 기록할 내용에 문자열이 아닌 숫자형 등의 데이터가 포함된 경우 str()로 변환해야 구문 오류(SyntaxError)가 발생하지 않습니다.

    • 파일객체.writelines(리스트): 리스트 내부에 저장된 여러 문자열 요소들을 연결하여 파일에 일괄 기록합니다.

    • 파일객체.close(): 사용이 완료된 파일 객체를 닫습니다. 파일 사용 후 반드시 close()를 호출해야 다른 프로그램이나 운영체제에서 해당 파일에 접근하여 다룰 수 있습니다.

  • 종합 실습 예제

    • 카페 메뉴 파일 읽기 및 주문 영수증 파일 출력 프로그램

    # 1. cafemenu.csv 파일 읽고 전체 출력하기
    menufile = open('cafemenu.csv', 'r', encoding='UTF-8')
    print('메뉴목록입니다.
    ', menufile.read())
    menufile.close()
    
    # 2. 음료 주문받고 receipt.txt 파일에 주문내역 생성하기
    order = input('주문하신 음료를 입력해주세요.')
    quantity = input('몇 잔 주문하시겠습니까?')
    print(order, quantity, '잔 주문 받았습니다.')
    
    file = open('receipt.txt', 'w', encoding='UTF-8')
    file.write('주문내역 음료: ' + order + '     수량: ' + quantity)
    file.close()
    &nbsp;&nbsp;&nbsp;&nbsp;```
    - CSV 메뉴판 데이터 파싱 및 결제 금액 자동 계산 프로그램
    

    python

    cafemenu.csv 파일 읽기

    menufile = open('cafemenu.csv', 'r', encoding='UTF-8')

    메뉴와 가격을 저장할 딕셔너리 객체 생성

    menu_price = {}

    첫 줄(헤더 정보: 메뉴, 가격) 건너뛰기

    menufile.readline()

    파일 한 줄씩 읽어 딕셔너리에 저장

    for line in menufile: menu, price = line.strip().split(',') menu_price[menu] = int(price) menufile.close()

    메뉴 및 가격 목록 화면 출력

    print('메뉴목록입니다.') for menu in menu_price: print(menu, ':', menu_price[menu], '원')

    사용자 주문 받기 및 금액 계산

    order = input('주문하신 음료를 입력해주세요.') quantity = int(input('몇 잔 주문하시겠습니까?')) total = menu_price[order] * quantity

    결과 출력

    print(order, quantity, '잔 주문 받았습니다.') print('총 금액은', total, '원입니다.')

    영수증 파일(receipt.txt) 쓰기

    file = open('receipt.txt', 'w', encoding='UTF-8') file.write('주문내역 ') file.write('음료 : ' + order + ' ') file.write('수량 : ' + str(quantity) + ' ') file.write('총 금액 : ' + str(total) + '원') file.close()     ```

    • 카페 이벤트 참가자 정보 저장 및 명단 조회 프로그램

    • 카페 이용 손님의 이름, 전화번호, 메일주소를 입력받아 event.txt 파일에 누적 추가('a')하고, 등록된 전체 명단을 읽어와서 화면에 출력하는 프로그램입니다. ```python

    사용자 입력 받기

    name = input('성명을 입력해주세요:') number = input('전화번호를 입력해주세요:') mail = input('메일주소를 입력해주세요:') print('참여해주셔서 감사드립니다.')

    추가 모드('a')로 event.txt 파일에 기록

    file = open('event.txt', 'a', encoding='UTF-8') file.write('성명:' + name + ' 전화번호:' + number + ' 메일주소:' + mail + ' ') file.close()

    읽기 모드('r')로 전체 참여 명단 출력

    event = open('event.txt', 'r', encoding='UTF-8') print('<현재까지 참여 명단>') print(event.read()) event.close()     ```