迷走ブログ

ファウスト的衝動を抱き、迷走している、凡人による気まぐれブログです。

【python・ライフハック】社食や学食でどのランチを食べるか迷った時に使うプログラムを考えてみた

はじめに

とある日、主人公はつまらない午前の仕事を終え、幸福とも言えるランチ休憩に入った。しかし、事件が起きた。
どれも微妙なランチメニューであったため、食べたいものがない!
昼ごはんを食べないと午後からの退屈な死事仕事に取りかかれない・・・そんなどうしようもない状況に陥った時ーー誰かが主人公のところに現れて耳元で呟いた。

「pythonで解決せよーー」
・・・・・・主人公は幻聴でも聞いていたのだろうか。

あるがままに、なすがままに、おもむくままに、主人公は手元のiPhoneで、コードを書き始めたのだったーー

前提条件的なものとやりたいこと・方向性

今回の場合は、複数のランチメニューから、一つだけメニューを選びたい、と仮定します。
ただし、社食や学食で提供されるランチメニューの日替わり定食の「数」は毎日固定されており、5つとします。そこで、それらの5つの選択肢から一つのランチメニューのみを選ぶ、ということにしたいと思います。

使用するアプリ

今回は手持ちのiPhoneにダウンロードしておいたJunoというアプリを使っています。これはJupyter notebookを使うことができるため、動的にコードを実行できます。そのため、Junoを用いました。

Juno

Juno

  • Rational Matter
  • 開発ツール
  • ¥1,840

コード

パターン1:ランチ名に振られている数字のみを出力するだけの場合を考えてみた

import random

a = random.randint(1,6)

print('本日のランチは、'+str(a)+'です。')

f:id:yktmmrmtoosa03:20211012211403j:plain
昼食時に、その場で書いたのが上記のコードとなります。
random は、pythonを入れるとはじめから使うことができます。
そのため、咄嗟に思い出したのが、random でした。

ただ、これだと捻りがなかったので、昼食をとりながら考え直しました。

パターン2:特定の商品名があらかじめ決まっている場合を考えてみた

import random

lunch_menu = ['A','B','C','D','E']
lunch = random.choice(lunch_menu)

print('本日のメニューは、'+str(lunch)+'セットをオススメします。')

f:id:yktmmrmtoosa03:20211012212152j:plain
こちらは、例えば「うどんセット」や「チャーハンセット」等、「〇〇セット」というセット名が固定の場合を考えてみました。
そのため、あらかじめ決まったリストを用意しておき、そこに要素を登録しておくこと必要があります。そして、コードの実行時にそのリスト内から1つの候補を選ぶというものです。

コードを書いていく中で、あまり使い所がなさそうだなと思いました。
当初、日替わりの5つのメニューは固定であるので、「うどん系」「ラーメン系」「丼もの」等の決まったワードを入れておいて、呼び出せばいいかと思いました。
しかし、あらかじめ決めておいたワードに合致するメニューが今後も必ず出てくる可能性は、ちょっと低そうだなと考え直しました。
例えば、今は中華系1と丼もの2と麺系2で固定されているのですが、それぞれ急にコンセプトを変えられてしまい、フォーやフィッシュ&チップス等の予期せぬものが出てくる可能性があると考えました。
従って、このコードの使い所は今後なさそうです。
まあ、pythonの勉強だから、気にしない

そこで、動的に候補を入力できるようにすれば良くないか?と考え直しました。

パターン3:その場でランチメニュー名を入力する場合を考えてみた

import random

print("今日のランチ候補名を順番に入れてください。")
string = input("候補1:")
string2 = input("候補2:")
string3 = input("候補3:")
string4 = input("候補4:")
string5 = input("候補5:")

lunch_data = [string,string2,string3,string4,string5]
ld = random.choice(lunch_data)

print('本日のメニューは、'+str(ld)+'セットをオススメします。')

f:id:yktmmrmtoosa03:20211012222241j:plain
input()を用いることで、その場でメニュー名を入力していきます。
そして、5つ目の候補を入れ終えると、それらのインプットを一度リストとして収納します。そのリストから前のコードと同様にランダムで表示させています。

今後、メニューの候補が増える場合に、追加しなければならない箇所が2箇所もあるので、やはりちょっと美しくないです。そのため、繰り返し処理やリストに入れておいて、辞書を作る的な方法が良いのかもしれませんが、あまりわからないですが・・・

f:id:yktmmrmtoosa03:20211012223127j:plain

おわりに

今後は、やはりコード的に美しくないので、短縮するなり、別の方法を考えてみたいと思います。