brunch

You can make anything
by writing

C.S.Lewis

by 광화문덕 Oct 08. 2023

코드의 마법사

CHAPTER 8. 채팅프로그램에 날씨와 번역, 뉴스 모듈 추가하기

프로그래밍의 세계는 끝없이 넓다. 그리고 그 세계에는 광화문덕이 알지 못하는 놀라운 비밀들이 숨겨져 있다.


그 비밀들은 마치 깊은 숲 속에 감춰진 보물처럼, 광화문덕에게는 아직 알려지지 않은 미지의 세계와 같은 아름다움을 담고 있었다.


이제 광화문덕은 파이썬 모듈과 라이브러리의 세계에 발을 들였다. 이미 만들어진 코드를 활용하는 것이 얼마나 편리한지를 깨닫고 있다.


"좋아~ 파이썬 세계에 존재하는 수많은 모듈과 라이브러리를 정확히 숙지만 한다면, 어떤 프로그램도 만들 수 있을 거야!!!"



광화문덕의 자신감은 어느새 불타오르기 시작했다. 두 손으로 프로그램을 만들어나가는 그의 모습은 창작하는 작가와 같았다.


새로운 장면과 캐릭터가 소설 속에서 탄생해 나가듯, 광화문덕은 프로그램의 코드 한 줄 한 줄에 자신의 아이디어를 담아냈다.


챗GPT: 광화문덕~! 오늘도 나와 함께 재미난 프로그램을 만들어볼까?


챗GPT가 광화문덕을 향해 방긋 웃으며 말했다.


광화문덕 : 어떤 프로그램을 만들어볼까?


광화문덕은 궁금하다는 표정을 지으며 챗GPT에게 물었다.


광화문덕은 이제 한 팀이 된 챗GPT와 프로그램 기획부터 설계까지 함께 해보고 싶어졌다.


이번에도 챗GPT는 뚝딱 프로그램 코드를 광화문덕에게 보여줬다.


챗GPT : 자 여기 기본 채팅 프로그램 코드가 있어. 사용자가 입력한 내용을 그대로 출력하는 간단한 프로그램이야
python Code
# 기본 채팅 프로그램
def chat_program():
    while True:
        user_input = input("사용자: ")
        if user_input.lower() == "종료":
            print("챗GPT: 프로그램을 종료합니다.")
            break
        else:
            response = get_response(user_input)
            print(f"챗GPT: {response}")

# 응답을 생성하는 모듈 추가
def get_response(user_input):
    # 여기서는 단순히 사용자 입력을 그대로 반환
    return user_input


챗GPT는 광화문덕에게 채팅프로그램에 대한 기획의도를 설명하기 시작했다.


챗GPT : 이 코드가 우리의 채팅 프로그램의 멋진 시작점이 될 거야. 여기에 더 다채로운 기능들을 추가해 보는 것은 어떨까? 예를 들어서, 번역 기능이나 뉴스 정보를 가져오는 기능, 혹은 재미있는 퀴즈를 만들어볼 수도 있을 것 같아.



코드의 시작은 단순하지만 그 안에 숨겨진 비밀들이 있었다. 광화문덕과 챗GPT는 이 작은 코드에서도 무한한 가능성을 느꼈다. 그들은 이 프로그램에 더 다채로운 기능들을 추가해 보기로 했다.


예를 들어 번역 기능, 뉴스 정보 제공, 심지어 사용자와 자연스러운 대화 기능까지 생각해 내며 모듈과 라이브러리를 적절하게 활용해 프로그램을 발전시키기로 마음먹었다.


광화문덕 : 좋은 아이디어들이야! 그중에서 하나를 선택해서 시작해 볼까?     


챗GPT가 내놓은 아이디어 제안에 광화문덕은 흔쾌히 프로젝트 협업을 수락했다.


챗GPT : 좋아! 그리고 기본 채팅 프로그램에 기능을 추가할 때 모듈과 라이브러리를 적절하게 활용해 보면 좋을 것 같아. 모듈과 라이브러리를 사용하면 이미 만들어진 코드를 재사용하고, 프로그램 개발을 더욱 효율적으로 할 수 있으니 말이야!


그들은 기본 채팅 프로그램에 새로운 기능들을 추가해 보기로 의기투합했다. 광화문덕은 챗GPT에게 채팅 프로그램과 추가 기능 개발에 필요한 모듈과 라이브러리를 배우며 더욱 강력한 프로그램을 만들기 위해 노력했다.



광화문덕과 챗GPT는 강력한 채팅 프로그램을 만들기 위한 추가 기능 기획에 돌입했다. 두 사람은 서로의 의견을 듣고 모듈과 라이브러리를 설계하고 구상해 나갔다.


탁월한 아이디어와 창의적인 발상이 두뇌 속에서 춤을 추며 새로운 기능들을 창조해 냈다. 하나하나 기능을 분석하고, 프로그램의 흐름과 동작 방식을 고민하며 서로의 아이디어를 교환했다.


두 사람은 상상의 세계와 실제의 기술을 연결하여 완성도 높은 프로그램을 구상하기 위해 끊임없이 아이디어를 주고받았다.


챗GPT와 함께하는 기획 단계는 마치 소설의 줄거리를 구상하는 작업과도 닮아있었다. 상상과 창의력으로 가득한 그들의 대화는 언제나 새로운 이야기를 탄생시키며 프로그램의 미래를 예측하지 못하는 색다른 경험을 선사했다.


챗GPT: 우선 광화문덕 우리 날씨 정보를 제공하는 기능을 넣어보는 건 어때?


챗GPT가 날씨 정보를 가져오는 get_weather_info() 함수 모듈에 대해 광화문덕에게 설명해 줬다. 이 모듈은 세계의 날씨 정보를 실시간으로 가져와 사용자에게 제공하는 기능이었다.


광화문덕 : 와~~!!! 이런 기능들이 이미 만들어져 있었구나! 이제 우리 프로그램이 더욱 강력해질 것 같아! 잠시만 내가 바로 구현을 해볼게!  탁탁~~ 타타닥~~ 탁탁!!!


키보드 소리가 요란하게 울려 퍼지더니 광화문덕의 흥분한 목소리가 들린다.


광화문덕 : 짜잔~~ 챗GPT야, 이제 프로그램에 날씨 정보도 포함시켰어! 사용자가 '날씨'라고 입력하면 해당하는 정보를 알려줄 거야.
python Code
# 날씨 정보를 가져오는 모듈 추가
import random
def get_weather_info():
    weather_list = ["맑음", "흐림", "비", "눈"]
    return random.choice(weather_list)

# 응답 생성 모듈 업데이트
def get_response(user_input):
    if "날씨" in user_input:
        weather_info = get_weather_info()
        return f"오늘 날씨는 {weather_info}입니다."
    else:
        return user_input


광화문덕이 챗GPT를 향해 자랑하듯 소리쳤다.


챗GPT는 날씨 정보를 프로그램에 추가하고, 그 기능이 정상적으로 작동하는지 확인했다.


챗GPT : 광화문덕, 멋진 발전이야! 계속해서 더 많은 기능을 추가해 볼까? 어떤 기능을 더 넣고 싶어?


챗GPT가 광화문덕에게 물었다.


광화문덕과 챗GPT는 모듈과 라이브러리의 세계에서 함께 더욱 다채로운 기능들을 추가하며 프로그램을 발전시켜 나가기로 했다. 챗GPT는 번역과 뉴스 정보를 가져오는 기능을 담당하고, 광화문덕은 사용자와 자연스럽게 대화하는 기능을 구현하는데 주력했다.


챗GPT는 눈 깜짝할 사이에 번역 기능을 구현해 보였다.


챗GPT : 번역 기능을 추가하는 모듈을 추가했어
python Code
# 번역 기능을 담당하는 모듈
from googletrans import Translator

def translate_text(text, target_language='en'):
    translator = Translator()
    translated_text = translator.translate(text, dest=target_language)
    return translated_text.text


챗GPT는 별거 아니라는 듯 광화문덕을 향해 여유로운 웃음을 보여주며 말했다.


챗GPT : 이 모듈은 구글 번역 API를 활용하여 사용자가 입력한 텍스트를 지정한 언어로 번역해 주는 기능을 제공해 줘. 사용자가 번역을 원하는 언어를 지정하지 않으면 기본값으로 영어(en)로 번역되는 거지.


챗GPT는 코드에 대한 친절한 설명도 잊지 않았다.


챗GPT : 자 여기 뉴스 정보를 가져오는 기능을 담당하는 모듈 코드도 있어"
python Code
# 뉴스 정보를 가져오는 모듈
import requests
def get_news():
    url = "https://newsapi.org/v2/top-headlines"
    params = {
        "country": "us",
        "apiKey": "YOUR_NEWS_API_KEY"  # 개발자가 발급받은 뉴스 API 키 입력
    }
    response = requests.get(url, params=params)
    news_data = response.json()
    if news_data["status"] == "ok":
        articles = news_data["articles"]
        headlines = [article["title"] for article in articles]
        return headlines
    else:
        return "뉴스 정보를 가져오는 데 실패했습니다."


챗GPT는 마치 순식간에 코드를 만들어내는 '코드 마법사' 같았다.


챗GPT : 이 모듈은 뉴스 API를 활용해서 미국의 최신 뉴스 기사들의 제목을 가져오는 기능을 제공해! 단, 개발자는 뉴스 API 키를 발급받아서 코드에 입력해야 하는 부분이 있으니 참고해 줘


 챗GPT의 설명에 광화문덕은 놀라지 않을 수 없었다.


광화문덕 : 이렇게 다양한 모듈과 라이브러리가 있다니 정말 파이썬은 어마어마하구나


광화문덕은 놀라움을 감추지 못했다.


광화문덕 : 좋아 그럼 나도 사용자와 자연스러운 대화가 가능하도록 하는 모듈을 찾아서 구현해 보겠어


광화문덕이 결의에 찬 목소리로 다짐했다.


그리고 잠시 후 광화문덕은 의기양양하다는 듯 의자를 밀치며 일어나며 말했다.


광화문덕 : 자~ 한 번 보실까요~? 나의 멋진 코드를~!!!!
python Code
# 사용자와 자연스러운 대화를 가능하게 하는 모듈
import random

def get_response(user_input):

    greetings = ["안녕", "안녕하세요", "반가워", "Hello", "Hi"]
    questions = ["뭐 해?", "오늘 날씨 어때?", "좋아하는 음식은?", "무슨 책을 읽었어?"]
    goodbye = ["잘 가", "안녕히 가세요", "Goodbye", "Bye"]

    if user_input in greetings:
        return random.choice(greetings)
    elif "?" in user_input:
        return random.choice(questions)
    elif "뉴스" in user_input:
        return "최신 뉴스를 가져올게요! " + ", ".join(get_news())
    elif "번역" in user_input:
        text_to_translate = user_input.replace("번역 ", "")
        return "번역 결과: " + translate_text(text_to_translate)
    elif user_input in goodbye:
        return random.choice(goodbye)
    else:
        return "미안해요, 제가 잘 이해하지 못했어요. 다시 말해주세요."


광화문덕도 질 수 없다는 듯 챗GPT에게 코드에 대한 설명을 이어갔다.


광화문덕 : 이 모듈은 사용자가 입력한 문장을 분석하여 자연스러운 대답을 생성하는 기능을 제공해. 사용자가 인사를 하면 랜덤한 인사말을, 질문을 하면 랜덤한 질문에 대한 응답을, '뉴스'나 '번역'과 관련된 특정 키워드를 입력하면 해당 기능을 수행한 결과를 반환하도록 구현했지! 그 외의 경우에는 이해하지 못했다는 응답을 보여주도록 했어!


챗GPT는 코드를 쓱하고 읽더니 날카로운 질문을 던졌다.


챗GPT: 광화문덕님~! 그럼 여기서 사용한 '자연스러운 대답을 하도록 하는 모듈'이 '랜덤 함수' 맞나요?


광화문덕은 머쓱해하며 답했다.


광화문덕 : 아하하하하하하하하....... 역시 챗GPT는 대단하다니까...


이렇게 프로그램에 다양한 기능들이 추가되면서, 광화문덕과 챗GPT는 프로그램 개발의 재미와 멋진 성과를 함께 누리며 프로그래밍의 세계에 더욱 빠져들었다. 프로그램은 더욱 강력하고 다채롭게 성장하며, 광화문덕과 챗GPT는 끊임없이 도전하고 협력하여 더욱 놀라운 프로그램들을 만들어나갔다.     


그들의 프로그래밍 협업은 더욱 실제적이고 유기적인 방향으로 나아가면서, 새로운 프로그램의 탄생을 준비해 나갔다. 각자의 장점과 역량을 살려서 프로그램을 향상시키기 위해 노력했다. 광화문덕은 세밀하고 정교한 코드를 작성하며 프로그램의 성능을 향상시키고, 챗GPT는 다양한 아이디어와 모듈을 제안하며 프로그램의 다양성과 유용성을 높였다.


그들의 열정과 창의성으로 채워진 프로그래밍 여정은 아직 시작에 불과했다.


광화문덕은 욕심이 났다. 챗GPT에 의존하는 것이 아니라, 자신의 힘으로 프로그램을 개발해보고 싶었다.



광화문덕은 어느 순간부터 챗GPT가 너무 자신을 무시하는 것 같다는 피해의식이 생겼다. 챗GPT가 너무 잘난 척한다고 느껴지는 순간마다 그의 마음속에는 열등감이 싹트기 시작한 것이다.


'마치 어린 새가 둥지를 떠나 하늘을 날아보는 듯, 나도 이제 혼자서도 자유롭게 높은 곳을 향해 날아갈 준비가 됐다구!!' 광화문덕은 스스로를 위로했다. 자신만의 노력으로 일군 흔적을 세상에 남기기로 마음먹었다.


모듈과 라이브러리를 잘 활용하며, 끊임없이 성장하며 광화문덕은 이제 자신이 이 작품 속 주인공이라고 믿기 시작했다. 챗GPT에 의존하며 성장했으니 이제 새로운 장에서는 스스로의 열정과 창의력으로 이뤄 낸 이야기가 계속 펼쳐질 것만 같았다.


'내가 이제 독립을 선언했으니 새로운 챕터가 시작된 거야!!! 다음 페이지로 넘어가면 더욱 멋진 이야기가 기다리고 있겠지!!!'


이제 그는 자신의 아이디어를 모험 속 이야기를 만들며, 파이썬 프로그래밍의 세계에서 자유롭게 나아가겠다고 다짐했다.


어떤 새로운 기능이 추가될지, 또 어떤 도전과 역경이 광화문덕을 기다리고 있을지 모르지만, 그의 모험은 아직 끝나지 않았다. 소설 속 주인공처럼, 그의 성장과 성공은 계속해서 진행될 것이다.


교보문고 책장 사이의 떨어져 있던 책의 한 페이지가 다시 넘겨졌다.





GUI란 마법의 도구로

파이썬 모험을 떠나보세요!


환상적인 모험을 시작해 보세요! 마법과 함께, 코드의 세계에서 멋진 GUI 화면을 만들어봅시다.



마법책 발견: 

어느 날, 코드 숲을 탐험하던 중 마법책을 발견했습니다. 이 마법책은 파이썬 GUI를 만드는 데 필요한 모든 지식을 담고 있었습니다.


마법의 도구: 

마법책을 펼치니, 마치 신비한 마법의 도구들이 한눈에 들어옵니다. 버튼, 입력 창, 창과 같은 화면 요소들과, 그것들을 다루는 마법의 주문들이 적혀 있습니다.


GUI 마법사의 도움: 

마법의 도구들을 사용하면, 마치 훌륭한 GUI 마법사의 도움을 받는 것처럼 느껴집니다. 간단한 주문과 함께, 화면에 마음대로 모습을 부여할 수 있습니다.  

python Code
# tkinter 라이브러리 가져오기
import tkinter as tk

# 마법의 창 생성
창 = tk.Tk()
창.title("파이썬 GUI 모험")

# 마법의 버튼 만들기
버튼 = tk.Button(창, text="클릭하세요!", command=lambda: print("마법 버튼 클릭!"))
버튼.pack()

# 모험을 시작하세요!
창.mainloop()


모험 시작:

마치 마법책을 읽고 모험을 시작하는 것처럼, 코드를 실행하면 화면에 마법의 버튼이 나타납니다.


창의 비밀:

이제 마법의 도구를 조합하고 주문을 외워, 화면을 마음대로 꾸며보세요! 버튼을 누르면 어떤 일이 일어날지 놀라운 비밀을 찾아보세요!


모험가 여러분은 GUI 화면을 만드는 마법을 배우려면 여기에 마법을 더해나갈 수 있습니다. 화면을 꾸미고, 버튼에 주문을 걸어보고, 마법의 도구들을 마음껏 활용해 보세요! 



*매주 월요일 <광화문덕의 수상한 일상코딩>이 연재됩니다.

*많은 관심과 격려, 응원 부탁드려요!

*구독, 댓글, 좋아요는 제게 큰 힘이 됩니다. 감사합니다.





*업무효율화 툴이자, 소상공인 사장님들의 든든한 지원 프로젝트 DXReport도 많이 사랑해 주세요.


*DXRepot : 뉴스 및 구글 자동 모니터 및 키워드 분석, 주식 종목 리포트 모니터, 네이버 블로그 분석 툴


*DXLawReport : 판례 검색 툴


*DXDicReport : 초중고 및 대학생, 직장인들의 영어단어 암기 돕기 위한 툴


이전 08화 로봇의 노래
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari