나만의 명언 생성기

곽정은·2021년 1월 22일
2

알쓸신잡

목록 보기
4/4

안녕하세요. 곽정은입니다.

저는 매일 아침 동기부여 명언을 한 문장씩 다이어리에 적습니다. 오늘 그 수를 세어보니 벌써 26개나 되더군요. 제가 봐도 참 분장들이 좋아서 다른 사람들에게도 공유하고 싶다는 생각이 들었습니다. 어떻게 공유를 해야 할지 잠시 고민했었습니다.

보기 좋게 이미지로 만들지, 글로 적을지 고민을 하다가 나름 파이썬 배운 짬밥(?)이 있으니 간단한 프로그램을 만들어보기로 했습니다.

이름하여 '오늘의 명언 생성기'!

어떻게 만드는지 한번 볼까요?


1. random, pandas 라이브러리를 불러옵니다.

import random
import pandas as pd

2. 리스트로 명언을 string으로 한 줄씩 적어서 넣어줍니다. 이건 노가다에요...^^;;

그리고 변수에 저장해줍니다. 저는 data라는 변수에 저장했습니다.

data = ['명언', ... , '명언']

주피터 노트북으로 문장을 적을 때, '코드 모드'라면 글자가 창을 자꾸 넘어갑니다. 그럴 때는 **마크다운 모드**로 글을 적었다가 **코드 모드**로 다시 풀어주세요! 나름의 꿀팁 :)


3. 사실 리스트로 해도 되지만 데이터프레임으로 하는 쪽이 나중에 새로운 명언을 추가할 때 편할 것이라고 판단했습니다. 그래서 데이터 프레임을 만들어서 명언 리스트를 저장한 data를 값으로 사용합니다.

df = pd.DataFrame(data)
df.head()

head() 메서드로 상위 5개의 데이터만 확인해보았습니다. 열 이름이 0이라니...!
너무 예쁘지 않아 마음에 들지 않습니다. 바꿔줘야겠습니다. :(


4. rename() 메서드를 사용해서 열 이름을 0에서 음... 'wise saying'으로 바꿔줍니다. 구글에 검색해보니 그게 명언을 영어로 한 것이랍니다. :P

df.rename(columns = {0:'wise saying'}, inplace = True)
df.head()

다시 head() 메서드로 상위 5개 데이터를 확인해봅니다. 열 이름이 바뀌었군요!

이제 맘에 듭니다. :)


5. 저는 랜덤으로 26개 문장에서 한 문장이 추출되게 하고 싶었습니다. 그래서 난수 생성을 사용했습니다.

num = random.randrange(1, len(df))

이렇게 하면 1부터 데이터프레임의 길이만큼의 수 중에서 1개 숫자가 랜덤으로 생성됩니다. 랜덤으로 숫자 뽑기는 소중하니깐 변수에 넣어줍니다.


6. 출력해줄 문장을 적습니다. 이때 포맷팅을 사용합니다. 문자열에 어떤 값을 넣어줄 지 적어줍니다.

print("오늘의 명언은 %s 입니다." %(df.loc[num].values))

코딩마스터 시간에 들은 바로는 f를 사용해서 포맷팅하는 게 요즘 스타일이라고 하던데, 저는 %i, %d, %s만 써버릇해서 밖에 생각이 안나더라구요...물론 f로 써본적도 없구요...쿨럭...

우선 편한대로 쓰겠습니다. :)

저는 문자열에 넣어줄 값으로 랜덤 숫자를 인덱스로 하는 행의 값을 가져오려고 했습니다. 처음에는 loc[]만 썼는데, 이걸 사용하면 열 이름을 같이 달고 나오더라군요.
그래서 값만 가져올 수 있도록 values를 뒤에 붙여줬습니다. 이렇게 하면 리스트에 들어가있는 값의 형태가 나옵니다.


7. 함수로 한번에 묶어줍니다. 휴! 다 만들었습니다!

 def wisesaying_maker():
        num = random.randrange(0, len(df))
        print("오늘의 명언은 %s 입니다." %(df.loc[num].values))
        
        return

제가 가장 좋아하는 명언만 추려서 가져왔습니다. 저 명언들 뽑으려고 몇 번을 돌렸는지 ㅋㅋㅋ
특히 마지막 문장은 제가 동기부여 명언 적기를 매일 할 수 있게 많은 도움을 주었습니다.

명언 생성기라고 했지만 단 몇 줄만으로 만들어낼 수 있었죠 ㅎㅅㅎ
내 코드...작고 소듕해...

ipynb 코드는 이 구글 드라이브 링크에 있습니다. 명언을 여기에 적기 힘들어서 공유합니다!


짧은 코드지만 충분히 발전할 수 있다고 생각합니다.

  • 명언의 양을 늘린다.
  • 명언에 카테고리를 달아서 사람이 그날의 기분에 따라 카테고리를 선택하면 그 카테고리 중에서 명언을 하나 출력해준다
  • 슬랙이나 카카오톡에 연동해서(될지는 모르지만 봇으로) 하루에 하나씩 명언을 올려준다.

아니면 반대로 이런 것도 생각해볼 수 있지 않을까요?

"인터넷에서 읽은 것에 사진이랑 문장이 있다고 해서 다 믿지 말아라."

링컨의 아주 유명한 명언이죠.

...?!

뻥입니다. 링컨 생전에는 인터넷이 없었죠.
이 짤은 무분별하게 인터넷에 있는 말을 믿는 사람들을 놀리기 위한 것이죠.

여기서 아이디어를 차용해서 그럴 듯한 말들을 모아서 명언처럼 보이는 문구를 만들고 검은 바탕에 흰 글자로 문장을 표시하고 지은이 이름도 그럴 듯하게 지어놓아서 명언 같아 보이는 짤을 만드는 프로그램도 한번 생각해봤습니다.

사실 CS231n 복습을 미뤄두고 안하고 있어서 그걸 하려고 했는데 갑자기 이게 재밌어 보여서 딴길로 샜습네요. 허허.

이쯤 마무리하겠습니다. 다음에 만나요.
그럼 20000~!

** 수정 완료!

profile
인공지능 냉각시스템 개발기업 전략기획

3개의 댓글

comment-user-thumbnail
2021년 1월 22일

우와~~ 명언제조기라니, 정말 멋진데요? 배운 것을 활용하는 것, 한수 배워갑니다. 👍

1개의 답글
comment-user-thumbnail
2021년 1월 22일

ㅋㅋ 배운 것을 아주 잘 활용하셨군요! 멋집니다 👍

답글 달기