CHAPTER 8. 채팅프로그램에 날씨와 번역, 뉴스 모듈 추가하기
챗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야, 이제 프로그램에 날씨 정보도 포함시켰어! 사용자가 '날씨'라고 입력하면 해당하는 정보를 알려줄 거야.
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 : 번역 기능을 추가하는 모듈을 추가했어
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 : 이 모듈은 구글 번역 API를 활용하여 사용자가 입력한 텍스트를 지정한 언어로 번역해 주는 기능을 제공해 줘. 사용자가 번역을 원하는 언어를 지정하지 않으면 기본값으로 영어(en)로 번역되는 거지.
챗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 : 이 모듈은 뉴스 API를 활용해서 미국의 최신 뉴스 기사들의 제목을 가져오는 기능을 제공해! 단, 개발자는 뉴스 API 키를 발급받아서 코드에 입력해야 하는 부분이 있으니 참고해 줘
광화문덕 : 이렇게 다양한 모듈과 라이브러리가 있다니 정말 파이썬은 어마어마하구나
광화문덕 : 좋아 그럼 나도 사용자와 자연스러운 대화가 가능하도록 하는 모듈을 찾아서 구현해 보겠어
광화문덕 : 자~ 한 번 보실까요~? 나의 멋진 코드를~!!!!
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는 대단하다니까...
python Code
# tkinter 라이브러리 가져오기
import tkinter as tk
# 마법의 창 생성
창 = tk.Tk()
창.title("파이썬 GUI 모험")
# 마법의 버튼 만들기
버튼 = tk.Button(창, text="클릭하세요!", command=lambda: print("마법 버튼 클릭!"))
버튼.pack()
# 모험을 시작하세요!
창.mainloop()