ブログblog

Pythonで卵焼き作ってみた【Python】【入門】

はじめに

こんにちわ。すぎちゃんです。
主に研究開発や受託案件などの業務を担当しています。

現在Fotomeでは、「FotomeのFはPythonのP」なんて名言が生まれたくらい、Pythonという言語に力を入れています。
そんな背景もございまして、せっかくなら何かPythonにまつわる記事を書きたいな〜と漠然と考えていたのですが、家のトイレのドアノブに手を掛けた瞬間に閃きました。

「Pythonで卵焼き作れたら面白いんじゃね?」

その日から僕のこの記事を書くための辛く険しい修行が始まったのです…。
さて、本題に入りましょう。

1.材料

  • ・卵
  • ・良い卵
  • ・悪い卵
  • ・サラダ油
class Tamago(object):
    """
    卵class
    """
    inside = ['白身', '黄身']
    mixed_count  = 0
    is_divided   = False
    is_mixed     = False
    is_scrambled = False
    umami_level  = 50

    def dividing(self):
        # 卵を割るメソッド
        self.is_divided = True
        return self.inside

class GoodTamago(Tamago):
    """
    良い卵class
    """
    umami_level = 100

class BadTamago(Tamago):
    """
    良い卵class
    """
    umami_level = 0

class Oil(object):
    """
    油class
    """
    TYPES = {
        'salad': 0,
        'olive': 1,
        'goma' : 2
    }
    def __init__(self, type=None):
        self.type = type

2.道具

  • ・ボウル
  • ・フライパン
class Bowl(object):
    """
    ボウルclass
    """
    def mix(self, tamago, count=100):
        if not tamago.is_divided:
             raise ValueError("割らなきゃ混ぜれない!")
        print('{count}回混ぜましょう。'.format(count=count))
        for i in range(count):
            tamago.mixed_count = tamago.mixed_count + 1
            print('{}回目'.format(tamago.mixed_count))
        tamago.is_mixed = True
        return tamago

class Pan(object):
    """
    フライパンclass
    """
    oil = None
    def __init__(self, oil):
        if oil.type is not Oil.TYPES['salad']:
            raise ValueError("サラダ油じゃなきゃダメ!")
        self.oil = oil

    def scramble(self, tamago):
        if not tamago.is_mixed:
            raise ValueError("卵を溶いてからじゃなきゃダメ!")
        tamago.is_scrambled = True
        return mixed_tamago

3.手順

① 卵とボウルを用意します。

tamago = Tamago()
bowl   = Bowl()

② 卵を割ってボウルに入れ、10回混ぜます。

inside = tamago.dividing()
mixed_tamago = bowl.mix(tamago, count=10)

③ フライパンにサラダ油を敷きます。

oil = Oil(type=Oil.TYPES['salad'])
pan = Pan(oil)

④ フライパンに卵を入れてい炒ります。

scrambled_tamago = pan.scramble(tamago)

4.味見してみましょう

def tasting(dish):
    """
    味見メソッド
    """
    if 80 < dish.umami_level:
        print('美味い!')
    elif 40 < dish.umami_level and dish.umami_level <= 80:
        print('普通。')
    else:
        print('まずい…')

5.最後に

という訳で、見事にPythonで卵焼きを作りました! (爆
多少強引ではありますが、Pythonの基本的な文法や記法をなるべく盛り込み、かつオブジェクト指向的なエッセンスも取り入れているので「これぐらい余裕だぜ」ってことであれば脱Python初心者だと思います!

プログラミングという行為は普段の生活には現れないので、なるべく具体的でイメージしやすいお題があると勉強するにも教えるにもハードルが下がるかなと思って今回の記事を書いてみました。
少しでも多くの方がPythonの魅力を感じていただければ嬉しいです!!

次回は「Pythonで目玉焼きつくってみた」でお会いしましょう。
最後までお読みいただき、ありがとうございました!

受託開発についてのお問い合わせはこちら

おまけ

これまでに出てきたソースコードをまとめたものです。
いろいろ試しながら遊んでみて下さい!

class Tamago(object):
    """
    卵class
    """
    inside = ['白身', '黄身']
    mixed_count  = 0
    is_divided   = False
    is_mixed     = False
    is_scrambled = False
    umami_level  = 50

    def dividing(self):
        self.is_divided = True
        return self.inside

class GoodTamago(Tamago):
    """
    良い卵class
    """
    umami_level = 100


class BadTamago(Tamago):
    """
    悪い卵class
    """
    umami_level = 0

class Oil(object):
    """
    油class
    """
    TYPES = {
        'salad': 0,
        'olive': 1,
        'goma' : 2
    }
    def __init__(self, type=None):
        self.type = type

class Bowl(object):
    """
    ボウルclass
    """
    def mix(self, tamago, count=100):
        if not tamago.is_divided:
             raise ValueError("割らなきゃ混ぜれない!")
        print('{count}回混ぜましょう。'.format(count=count))
        for i in range(count):
            tamago.mixed_count = tamago.mixed_count + 1
            print('{}回目'.format(tamago.mixed_count))
        tamago.is_mixed = True
        return tamago

class Pan(object):
    """
    フライパンclass
    """
    oil = None
    def __init__(self, oil):
        if oil.type is not Oil.TYPES['salad']:
            raise ValueError("サラダ油じゃなきゃダメ!")
        self.oil = oil

    def scramble(self, tamago):
        if not tamago.is_mixed:
            raise ValueError("卵を溶いてからじゃなきゃダメ!")
        tamago.is_scrambled = True
        return mixed_tamago

def tasting(dish):
    """
    味見メソッド
    """
    if 80 < dish.umami_level:
        print('美味い!')
    elif 40 < dish.umami_level and dish.umami_level <= 80:
        print('普通。')
    else:
        print('まずい…')


if __name__ == '__main__':
    try:
        print('卵を用意します。')
        tamago = Tamago()

        print('ボウルを用意します。')
        bowl = Bowl()

        print('卵を割ります。')
        inside = tamago.dividing()
        print('{inside}が出て来ました。'.format(inside=inside))

        print('ボウルに卵を入れて混ぜます。')
        mixed_tamago = bowl.mix(tamago, count=10)

        print('フライパンに油を敷きます。')
        oil = Oil(type=Oil.TYPES['salad'])
        pan = Pan(oil)

        print('フライパンに卵を入れて炒ります。')
        scrambled_tamago = pan.scramble(tamago)

        if not scrambled_tamago.is_scrambled:
            raise ValueError("卵に火が通ってなきゃダメ!") 
   
        tasting(scrambled_tamago)       
    except ValueError as e:
        print(e)
        print('失敗!')