見出し画像

[Python]28行で作るターミナル本棚

1.何を作るのか

ターミナル上で本棚の機能をもつオブジェクトを作ります。本棚の機能は以下の3点としました。

1.本棚に本を追加する機能
2.本棚にある本の情報を一覧取得できる機能
3.本棚から本を取り除く(削除する)機能

2.コード

class BookShelf:
    def __init__(self, name):
        self.bk_sh = {}
        self.name = name
    
    def __str__(self):
        message = "本棚[{0}]".format(self.name)
        return message
    
    def add_book(self, title, author):
        self.bk_sh[title] = author
        print("追加したよ( ̄・ω・ ̄)")
    
    def list_book(self):
        if len(self.bk_sh) == 0:
            print("棚には何も追加されていません")
        else:
            print("{0:<10}| {1:<15}".format("Title", "Author"))
            print("{0}".format("-"*25))
            for title, author in self.bk_sh.items():
                print("{0}| {1}".format(title, author))
            print("{0}".format("-"*25))
            
    def remove_book(self, title):
        del_flag = int(input("削除していいの(´・ω・`)?[0:NG/1:OK]"))
        if del_flag:
            rm_book_author = self.bk_sh.pop(title)
            print("{0}(著):{1}を削除しました".format(rm_book_author, title))
        else:
            pass
 #インスタンス 
shelf = BookShelf("お気に入り") #インスタンスしたオブジェクトの名前 
print(shelf) #追加 
shelf.add_book("論語と算盤", "渋沢栄一")
shelf.add_book("脳・心・人工知能", "甘利俊一")
shelf.add_book("留魂録", "吉田松陰") #一覧表示 
shelf.list_book() #削除 
shelf.remove_book("留魂録")

3.実行結果

本棚[お気に入り]
追加したよ( ̄・ω・ ̄)
追加したよ( ̄・ω・ ̄)
追加したよ( ̄・ω・ ̄)
Title     | Author
-------------------------
論語と算盤| 渋沢栄一
脳・心・人工知能| 甘利俊一
留魂録| 吉田松陰
-------------------------

4.実際はこう使いたい

クラスの定義の部分のみを記述し、ファイル名をbook_shelf.pyとします。
そこからシェル上でインポートして上記のインスタンス以降のコードを書いて行くのが直感的でわかりやすいと思います。

>>> from book_shelf import BookShelf
>>> shelf = BookShelf("お気に入り")
>>> shelf.add_book("論語と算盤", "渋沢栄一")
追加したよ( ̄・ω・ ̄)


この記事が気に入ったらサポートをしてみませんか?