blog.dopana

Back

おかえりなさい、クラッシュテスターのみなさん! 🪖

自転車に乗っているところを想像してみてね。もし石につまずいたら、転んでケガをしてしまうかもしれません。でも、ヘルメットとひざあてをつけていれば、立ち上がって服の砂を払い、笑ってまた走り出せますよね!

Pythonでも、ロボットが石(間違ったコード)につまずくと、転んで「クラッシュ」(画面に部屋に赤い文字を出して強制終了すること)してしまいます。今日は、try(やってみる)と except(例外)を使って、ロボットにヘルメットをかぶせてあげましょう!

セーフティネット(エラー処理の仕組み)#

エラー処理は、危ない命令をクッション付きのシャボン玉で包み込むようなものです:

  1. try:ロボットに「気をつけてこれをやってみてね!」と指示します。
  2. except:ロボットに「もし転んでエラーが出ても、クラッシュしないで!代わりにこの予備の計画(バックアップ)を実行してね」と伝えます。
graph TD
    Start([リスクのあるコードを実行]) --> Try{"try: アクションを実行"}
    Try -->|成功| Done([そのまま進む!クラッシュなし])
    Try -->|つまずく - エラー| Except{"except: ヘルメットでキャッチ"}
    Except --> Backup["バックアップを実行 (🩹 笑って立ち上がる)"]
    Backup --> Done

バナナは数字に変えられない(ValueError)#

プレイヤーに年齢を聞いて、本物の数字に変換したのを覚えているかな?

age = int("バナナ")  # 💥 クラッシュ! Pythonは「バナナ」を数字に変換できません。
python

このコードをヘルメットで守ってみましょう:

try:
    user_input = input("年齢を入力してね: ")
    age = int(user_input)
    print("あなたは " + str(age) + " 歳ですね! 🎉")
except ValueError:
    print("🩹 おっと!それは数字ではありません。ロボットは無事です!")
python

もし 10 の代わりに "じゅう" と入力しても、ロボットはクラッシュしません! 優しい注意メッセージを表示して動き続けます。

ゼロで割ってはいけない(ZeroDivisionError)#

算数では、数字をゼロで割ることはできません。Pythonでそれをやろうとすると、ロボットはパニックになってクラッシュします:

try:
    cookies = 10
    kids = 0
    share = cookies / kids
except ZeroDivisionError:
    print("🌌 警告:ゼロで割ることはできません!宇宙が崩壊しちゃいます!")
python

クラッシュする代わりに、警告を表示して次の処理へ進むことができます。

自分でやってみよう! 🎮#

Pythonの画面を開いて、絶対に壊れない電卓を作ってみよう:

  1. input() を使って、ユーザーに数字を入力させます。
  2. 100 をその入力された数字で割る計算を try の中で実行します。
  3. 文字が入力されたときのために except ValueError を書きます。
  4. 「0」が入力されたときのために except ZeroDivisionError を書きます。
  5. 文字を入力したり、「0」を入力したり、普通の数字を入力して、どうなるか試してみてね!

おめでとうございます! きみは 「クラッシュ防止(Crash Protection)」 の魔法を手に入れました。これで、きみが作ったプログラムを友達に遊んでもらうときに、変な入力でゲームが止まってしまう心配はありません。素晴らしい進歩だよ! 🪖💻

参照#