AI를 활용한 파이썬 프로그래밍: 효과적인 질문법과 단계별 가이드 (예제 포함)
본문 바로가기
AI를 이용한 프로그램 만들기

AI를 활용한 파이썬 프로그래밍: 효과적인 질문법과 단계별 가이드 (예제 포함)

by 쌩양파 2025. 5. 9.

안녕하세요. 쌩양파 입니다. software 전공이 아닌 제가 AI를 이용한 파이썬 프로그램을 만들어 보기 위해 알아보고 있는 것들을 함께 공유드립니다.

 

AI를 활용한 파이썬 프로그래밍: 효과적인 질문법과 단계별 가이드

 

AI는 파이썬 프로그램 개발의 강력한 보조 도구가 될 수 있습니다. 아이디어 구상부터 코드 작성, 최적화, 기능 확장에 이르기까지 AI를 효과적으로 활용하기 위한 질문 방법과 순서를 예제와 함께 자세히 설명드리겠습니다.

 

핵심 원칙:

  • 명확하고 구체적인 질문: AI가 사용자의 의도를 정확히 파악하도록 질문합니다.
  • 단계별 접근: 한 번에 모든 것을 요구하기보다 작은 단위로 나누어 점진적으로 개발합니다.
  • AI의 답변 검토 및 이해: 생성된 코드를 스스로 이해하고, 궁금한 점은 추가 질문합니다. AI는 만능이 아닙니다.
  • 맥락 유지: 이전 대화 내용을 AI가 기억하도록 하거나, 필요시 상기시키며 질문합니다.
  • "왜?" 라고 묻기: 단순히 코드만 받는 것을 넘어, 원리를 이해하려 노력합니다.

예제 프로젝트: 간단한 "나만의 맛집 기록장" 프로그램 만들기

이 프로그램을 만드는 과정을 통해 AI와 어떻게 상호작용하는지 단계별로 살펴보겠습니다.

 

1단계: 아이디어 구체화 및 기본 설계 요청

가장 먼저 프로그램의 목적과 핵심 기능을 명확히 하고 AI에게 기본 구조에 대한 조언을 구합니다.

  • 사용자 질문 : 
  • "안녕하세요. 파이썬으로 간단한 '나만의 맛집 기록장' 프로그램을 만들고 싶어요. 맛집 이름, 음식 종류, 나의 평점(1~5점), 간단한 메모를 기록하고 싶습니다. 이 데이터를 어떻게 저장하고 관리하는 게 좋을까요? 그리고 기본적인 프로그램의 기능은 어떤 것들이 있으면 사용하기 편할까요? 파이썬 초보자도 이해하기 쉬운 형태로 기본적인 프로그램 구조를 추천해주세요."
  • AI의 예상 답변 및 역할:
    • 데이터 저장 방식 제안:
      • 간단한 시작: 리스트와 딕셔너리 사용
      • 데이터 영속성: CSV 파일 또는 JSON 파일 저장/로드
      • (더 나아가) 데이터베이스 (SQLite 등) 사용 가능성 언급
    • 핵심 기능 제안:
      • 맛집 정보 추가
      • 맛집 목록 보기
      • 맛집 정보 검색 (이름, 음식 종류 등)
      • 맛집 정보 수정
      • 맛집 정보 삭제
    • 기본 구조 추천:
      • 함수 기반의 절차적 프로그래밍으로 시작
      • 데이터를 담을 자료구조 (예: 맛집 정보를 담는 딕셔너리들의 리스트)
      • 각 기능을 수행하는 함수들 (예: add_restaurant(), view_restaurants() 등)
      • 사용자 입력을 받고 메뉴를 선택하는 메인 루프
  • 후속 질문 (사용자):
  • "좋아요. 우선 리스트와 딕셔너리를 사용해서 맛집 정보를 메모리에 저장하고, CSV 파일로 저장하고 불러오는 기능을 넣어보고 싶어요. 핵심 기능으로는 맛집 추가, 전체 목록 보기, 맛집 이름으로 검색하는 기능을 먼저 만들어보고 싶습니다."

2단계: 핵심 기능 구현 요청 (작은 단위로 나누어 요청)

한 번에 모든 기능을 요청하기보다, 가장 중요한 기능부터 하나씩 AI에게 코드 생성을 요청합니다.

  • 사용자 질문:
  • "먼저, 맛집 정보를 저장할 데이터 구조를 파이썬 코드로 만들어주세요. 맛집 정보는 이름, 음식 종류, 평점, 메모를 포함합니다. 그리고 새로운 맛집 정보를 입력받아 이 데이터 구조에 추가하는 add_restaurant() 함수를 작성해주세요. 입력받을 때는 각 항목에 대해 사용자에게 명확한 안내 메시지를 보여주면 좋겠습니다."
  • AI의 예상 답변 및 역할:
    • 맛집 정보를 저장할 리스트 변수 선언 (예: restaurants = [])
    • add_restaurant() 함수의 코드 생성 (내부적으로 딕셔너리 사용 제안 가능)
    • 사용자 입력(input())을 받고, 딕셔너리로 만들어 리스트에 추가하는 로직 포함
    • 간단한 입력 유효성 검사 아이디어 제안 (예: 평점은 1~5 사이 숫자인지)
    Python
     
    # AI가 생성할 수 있는 예시 코드 (일부)
    restaurants = []
    
    def add_restaurant():
        name = input("맛집 이름을 입력하세요: ")
        cuisine = input("음식 종류를 입력하세요: ")
        while True:
            try:
                rating = int(input("평점 (1-5점)을 입력하세요: "))
                if 1 <= rating <= 5:
                    break
                else:
                    print("평점은 1에서 5 사이의 숫자로 입력해주세요.")
            except ValueError:
                print("숫자로 평점을 입력해주세요.")
        memo = input("간단한 메모를 남겨주세요: ")
    
        restaurant = {
            "name": name,
            "cuisine": cuisine,
            "rating": rating,
            "memo": memo
        }
        restaurants.append(restaurant)
        print(f"'{name}' 맛집 정보가 추가되었습니다.")
    
  • 후속 질문 (사용자):
  • "만들어진 add_restaurant() 함수를 어떻게 테스트해볼 수 있을까요? 그리고 이어서 전체 맛집 목록을 보기 좋게 출력하는 view_restaurants() 함수도 만들어주세요. 목록이 비어있을 경우 '등록된 맛집이 없습니다.' 라고 출력해주세요."

3단계: 기능 추가 및 기존 코드와 통합

새로운 기능을 요청하고, 기존 코드와 어떻게 통합할지 AI에게 도움을 받습니다.

  • 사용자 질문 (예: CSV 저장/로드 기능 추가):
  • "이제 restaurants 리스트에 저장된 맛집 정보를 프로그램 종료 시 'my_restaurants.csv' 파일에 저장하고, 프로그램 시작 시 이 파일이 있으면 자동으로 불러오는 기능을 추가하고 싶습니다. save_to_csv() 함수와 load_from_csv() 함수를 만들어주시고, 이 함수들을 프로그램의 시작과 종료 시점에 어떻게 호출해야 하는지 알려주세요. CSV 파일 형식은 첫 줄에 헤더(name,cuisine,rating,memo)를 포함하도록 해주세요."
  • AI의 예상 답변 및 역할:
    • csv 모듈을 사용한 save_to_csv() 및 load_from_csv() 함수 코드 생성
    • 파일 I/O (open(), with 구문) 사용법 포함
    • try-except를 활용한 파일 존재 여부 및 오류 처리 코드 포함
    • 메인 프로그램 흐름에서 언제 이 함수들을 호출해야 하는지 설명 (시작 시 로드, 종료 전 저장)
  • 후속 질문 (사용자):
  • "맛집 이름으로 특정 맛집 정보를 검색하는 search_restaurant_by_name() 함수를 추가하고 싶어요. 검색 결과가 여러 개일 수도 있고, 없을 수도 있는데 이 경우들을 어떻게 처리하면 좋을지 알려주고 코드를 작성해주세요."

4. 코드 설명, 리팩토링 및 최적화 요청

AI가 생성한 코드가 잘 동작하더라도, 코드의 의미를 이해하고 더 나은 구조로 개선하는 것이 중요합니다.

  • 사용자 질문 (코드 설명):
  • "방금 만들어준 load_from_csv() 함수에서 with open(...) as f: 구문은 정확히 어떤 역할을 하는 건가요? 그리고 csv.DictReader는 일반 csv.reader와 어떤 차이가 있나요?"
  • 사용자 질문 (리팩토링):
  • "지금까지 작성된 코드가 하나의 파일에 너무 길어진 것 같아요. 맛집 데이터를 관리하는 부분(추가, 보기, 검색, 저장, 로드)을 RestaurantManager라는 클래스로 묶어서 관리하면 더 좋을 것 같은데, 현재 코드를 클래스 기반으로 리팩토링 해주실 수 있나요?"
  • AI의 예상 답변 및 역할:
    • 특정 코드 구문, 라이브러리 사용법에 대한 상세 설명
    • 클래스 정의, 메서드 분리 등 리팩토링된 코드 제안
    • 기존 절차적 코드와 클래스 기반 코드의 장단점 비교 설명 (선택적)
  • 사용자 질문 (최적화):
  • "만약 맛집 데이터가 수천 건으로 매우 많아진다면, 현재의 이름 검색 방식(리스트 전체 순회)은 느려질 수 있을 것 같아요. 이런 경우 검색 성능을 향상시킬 수 있는 다른 방법이 있을까요? (예: 특정 자료구조 사용, 인덱싱 아이디어 등)"
  • AI의 예상 답변 및 역할:
    • 성능 문제 지적에 대한 공감 및 원인 분석
    • 간단한 최적화 아이디어 제시 (예: 정렬 후 이진 검색 아이디어, 또는 더 복잡한 데이터 구조는 개념만 설명)
    • 주의: AI가 항상 최적의 알고리즘을 제시하지는 못할 수 있으므로, 제안된 내용을 비판적으로 검토하고 추가 학습이 필요합니다.

5. 오류 처리 및 예외 관리 강화

프로그램의 안정성을 높이기 위해 예외 처리 방법을 AI에게 문의합니다.

  • 사용자 질문:
  • "맛집 평점 입력 시 사용자가 숫자가 아닌 문자를 입력하면 ValueError가 발생하며 프로그램이 종료됩니다. 이런 상황을 방지하기 위해 add_restaurant() 함수 내에 적절한 예외 처리(try-except)를 추가해주세요. 또한, CSV 파일이 손상되었거나 형식이 맞지 않을 경우 load_from_csv() 함수에서 발생할 수 있는 오류에 대한 예외 처리도 보강해주세요."
  • AI의 예상 답변 및 역할:
    • try-except 블록을 사용한 예외 처리 코드 추가
    • 발생 가능한 특정 예외 타입 명시 (예: ValueError, FileNotFoundError, IOError, csv.Error 등)
    • 사용자에게 친절한 오류 메시지를 보여주는 방법 제안

6. 기능 확장 및 새로운 아이디어 탐색

기본 기능이 완성되면, AI와 함께 새로운 기능을 구상하고 구현 도움을 받을 수 있습니다.

  • 사용자 질문:
  • "이제 맛집 정보에 '방문 날짜'도 추가하고 싶어요. 날짜 형식은 'YYYY-MM-DD'로 하고, 날짜를 기준으로 정렬해서 보여주는 기능도 있으면 좋겠습니다. 파이썬의 datetime 모듈을 어떻게 활용할 수 있을까요? 관련 코드와 함께 설명해주세요."
  • AI의 예상 답변 및 역할:
    • 기존 데이터 구조 수정 방안 (딕셔너리에 'visit_date' 키 추가)
    • datetime 모듈 사용법 (strptime으로 문자열을 날짜 객체로 변환, strftime으로 날짜 객체를 문자열로 변환)
    • 날짜 기준 정렬을 위한 sort() 또는 sorted() 함수의 key 인자 활용법 설명 및 코드 제공
  • 사용자 질문 (고급 기능 아이디어):
  • "맛집 목록을 단순히 텍스트로 보는 것 외에, 평점별로 그룹화해서 보여주거나, 가장 최근에 방문한 맛집 N개를 보여주는 기능도 추가하고 싶은데, 어떤 식으로 접근하면 좋을까요? 아이디어를 좀 주세요."
  • AI의 예상 답변 및 역할:
    • 데이터 처리 로직 아이디어 제안 (예: itertools.groupby 활용, 리스트 슬라이싱 및 정렬 활용 등)
    • 필요한 경우 간단한 수도 코드 또는 로직 설명

7. 테스트 및 디버깅 지원 요청

문제가 발생했을 때 AI에게 도움을 요청할 수 있습니다.

  • 사용자 질문:
  • "맛집 검색 기능이 예상대로 동작하지 않아요. 대소문자를 구분해서 검색하는데, 구분 없이 검색하고 싶습니다. search_restaurant_by_name() 함수를 어떻게 수정해야 할까요? 그리고 특정 맛집을 추가했는데 CSV 파일에 제대로 저장이 안 되는 것 같습니다. 어떤 부분을 확인해봐야 할까요? 디버깅을 위한 팁도 알려주세요."
  • AI의 예상 답변 및 역할:
    • 대소문자 구분 없는 검색을 위한 문자열 메서드(.lower(), .upper()) 사용 제안 및 코드 수정
    • CSV 저장 문제 관련하여 확인해야 할 부분 제시 (파일 경로, save_to_csv 함수 호출 시점, 파일 쓰기 권한 등)
    • 디버깅 팁 제공 (print문 활용, 파이썬 디버거(pdb) 소개, 단계별 실행의 중요성 등)

성공적인 AI 활용을 위한 추가 조언:

  • AI의 한계 인지: AI는 방대한 데이터를 학습했지만, 항상 완벽하거나 창의적인 해결책을 제공하는 것은 아닙니다. 비판적인 시각으로 AI의 답변을 검토하고, 필요하다면 여러 번 다른 방식으로 질문하거나 직접 수정해야 합니다.
  • 작은 단위로 실험하고 통합: AI가 생성한 코드는 작은 단위로 테스트하고, 성공적으로 작동하면 전체 프로그램에 통합하는 것이 안전합니다.
  • 꾸준한 학습 병행: AI는 훌륭한 보조 도구이지만, 프로그래밍의 기본 원리와 개념을 스스로 학습하는 것이 장기적으로 중요합니다. AI에게 "왜 이 코드가 이렇게 동작하는지" 물어보며 학습의 도구로도 활용하세요.
  • 버전 관리 시스템 활용: Git과 같은 버전 관리 시스템을 사용하여 코드 변경 사항을 추적하고, 문제가 생겼을 때 이전 상태로 쉽게 돌아갈 수 있도록 하는 것이 좋습니다.

AI와 효과적으로 소통하고 위에서 제시된 단계별 접근 방식을 따른다면, 파이썬 프로그램 개발의 생산성과 효율성을 크게 높일 수 있을 것입니다. 즐거운 코딩 여정이 되시길 바랍니다!

이상 쌩양파 였습니다.