2018.08.06
2021.08.12
Fabeee社員ブログ
目次
はじめに
こんにちわ。すぎちゃんです。
主に研究開発や受託案件などの業務を担当しています。
現在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('失敗!')