Pythonでダルマ落としを作る
- 作成日: 2023-08-04
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonでダルマ落としを作る
毎日暑いですね。
2023年の8月の日本は今までにないほどの異常気象です。
おまけに嵐まで来ている始末。どうすりゃええねん。
こんな時はダルマ落としでもしよう、ということで。
今回はPythonでダルマ落としを作ってみました。
関連記事
Djangoでオブジェクトを一括作成・更新【bulk_create, bulk_update】
DjangoのModel.objects.filter()の使い方【QuerySet】
Djangoのmodelのcreate()の使い方【Python】
Django入門: ルートの設定 ~ 簡単な一行掲示板アプリを作る その4【Windows10】
NumPyのappend()の使い方: 配列の末尾に要素を追加
Numpyのarangeの使い方: 指定範囲の数列を生成する
Python3でYoutube Data APIを使ってキーワード検索する
PythonからC言語(my.puts)を呼び出して実行する
ソースコード全文
今回作るダルマ落としのソースコードは以下になります。
import sys
parts = [
"""
+----------------+
| |
| + + |
| |
+----------------+
""",
"""
+----------------+
| |
| _ _ |
| |
+----------------+
""",
"""
+----------------+
| |
| | | |
| |
+----------------+
""",
]
def draw():
for part in parts:
print(part.strip())
def update():
try:
s = input('0 or 1 or 2 > ')
except KeyboardInterrupt:
sys.exit(0)
try:
n = int(s)
except ValueError as e:
print(e, file=sys.stderr)
return
if n < 0 or n >= len(parts):
print('index out of range', file=sys.stderr)
return
parts.pop(n)
def main():
while True:
draw()
update()
main()
暑い!暑い!暑ーい!
私はダルマ、ダルマ落としだよ。
ポンコポンコポンコッコ。
ダルマを叩いて落としちゃう。
あそーれ、ダルマ、ダルマ、ダルマ落とし。
あそーれ、夏、スイカ、ちくわ、ダルマ落とし。
あよいよい!
ダルマの身体(parts)
ダルマの身体はparts
というグローバル変数に入れておきます。
これはリストで文字列が入ってます。
1つの要素がダルマの段になります。
parts = [
"""
+----------------+
| |
| + + |
| |
+----------------+
""",
"""
+----------------+
| |
| _ _ |
| |
+----------------+
""",
"""
+----------------+
| |
| | | |
| |
+----------------+
""",
]
上から太郎、次郎、三郎です。
こら太郎! 次郎と三郎に感謝しなさい!
あなたが上段に入れるのは下段のこいつらがいるからだよ!
なーんて、冗談冗談・・・。
あよいよい!
main関数
main
関数は以下になります。
def main():
while True:
draw()
update()
main()
main
関数ではwhile文で無限ループを書きます。
無限責任です。
それでdraw
(ダルォー)関数とupdate
(プデートゥ)関数を呼びます。
main
関数の仕事はこれだけです。
draw関数
draw
関数は以下です。
def draw():
for part in parts:
print(part.strip())
parts
から要素を取り出してその要素をstrip()
して裸にしてから(左右の空白改行を削除してから)print()
で要素を描画しています。
思い出~はいつの日も~サメ~♪
update関数
update
関数は以下になります。
def update():
try:
s = input('0 or 1 or 2 > ')
except KeyboardInterrupt:
sys.exit(0)
try:
n = int(s)
except ValueError as e:
print(e, file=sys.stderr)
return
if n < 0 or n >= len(parts):
print('index out of range', file=sys.stderr)
return
parts.pop(n)
まずdraw
関数を先に呼び出しているのでダルマはこの段階で描画済みです。
その描画したダルマの下にinput()
のプロンプトを出します。
input()
は標準入力から一行読み取る関数です。引数がプロンプトになります。返り値は読み取った文字列です。
この関数はCtrl + C
などが入力されるとKeyboardInterrupt
が発生します。
これが発生したらキャッチしてsys.exit(0)
でプログラムを終了します。
try:
s = input('0 or 1 or 2 > ')
except KeyboardInterrupt:
sys.exit(0)
読み取った文字列をint()
で整数にします。
整数への変換に失敗した場合はValueError
が飛んできますのでこれをキャッチしておきます。
print(e, file=sys.stderr)
ではfile
引数にsys.stderr
を指定しています。
こうすると出力先が標準エラー出力になります。
try:
n = int(s)
except ValueError as e:
print(e, file=sys.stderr)
return
整数に変換したn
がparts
の範囲外かどうかチェックして範囲外ならエラー出力してreturn
します。
parts.pop(n)
で指定のインデックスの要素をポップして削除します。
if n < 0 or n >= len(parts):
print('index out of range', file=sys.stderr)
return
parts.pop(n)
おわりに
今回はPythonでダルマ落としを実装してみました。
暑い日はダルマ落とし!
なにか参考になれば幸いです。
🦝 < ダルマを落とすぞ!
🦝 < ぶったたけ!