안녕하세요. 쌩양파 입니다. software 전공이 아닌 제가 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와 효과적으로 소통하고 위에서 제시된 단계별 접근 방식을 따른다면, 파이썬 프로그램 개발의 생산성과 효율성을 크게 높일 수 있을 것입니다. 즐거운 코딩 여정이 되시길 바랍니다!
이상 쌩양파 였습니다.
'AI를 이용한 프로그램 만들기' 카테고리의 다른 글
if __name__ == "__main__": 이건 어떻게 작동하나? (Python) (24) | 2025.05.09 |
---|---|
파이썬 코드 실행 과정 (파이썬 기초) (2) | 2025.05.09 |
파이썬 소스 코드, 어떻게 작동될까요? 자세히 알아봅시다! (2) | 2025.05.09 |
AI를 이용한 파이썬으로 구글 스프레드 시트에 연결하는 프로그램 만들기 1 (29) | 2025.04.17 |
TypeError: Cannot read properties of null (reading 'getDataRange') (2) | 2025.04.17 |