Python の勉強 スロットゲーム編 〜その2:コメント、変数〜

プログラミング

今回からはプログラムの内容を確認していきましょう。見て覚えるだけではなく実際にプログラムを変更しますので、先ずは「001.py」をコピペして「002.py」を作成してください。

準備

図中に記載したように以下の手順が一番早いかと思います。次回以降もファイルを複製するところから始めますので、この手順は覚えておくといいでしょう。VS Code だけでなく、Windows で動くアプリケーションは基本的に同じ操作が可能だと思います。

  1. 「001.py」を選択して、[Ctrl + c] → [Ctrl + v] を押す
     → 「001 copy.py」が作成される
  2. 「001 copy.py」を選択して [F2] を押す
     → ファイル名の変更が可能になるので「002.py」に変更する
「002.py」を作成

「002.py」の作成が完了したら、プログラムの 129、130 行目に注目して下さい。

「プレーヤーの所持コイン数」を確認

ゲームスタート時に所持コイン数「100」枚でスタートしたことと、この 2 行は関係が深そうです。
試しに 129 行目には「は 100 枚です」を追記、130 行目は値を 123 に変更してゲームを実行してみましょう。

129 行目の「100 枚」は無視され、130 行目の「123」がゲーム内容に反映されました。

コメント

129 行目のように、プログラムを読む人のために書かれた文章を “コメント” と言います。今回、確認したように “コメント” の内容はプログラムに影響しません。Python では「#」を使うことで、プログラム中に “コメント” を記載することができます。125~127 行目も “コメント” です。VS Code 上で緑文字で表現されているので分かりやすいですね。

“コメント” はどれだけ長くても、短くても、書いても、書かなくても結果は変わりません。自分が必要だと感じた場所に必要な量を書いて下さい。ただし、上記の例のように意図的に間違った情報を書くことは絶対にやめましょう。コメントは他人のため、自分のために添える親切な説明であるべきです。

お掃除

129 行目に追加した「は 100 枚です」という嘘コメントは、このタイミングで削除してください。確認のためとは言え書いてはいけないコメントを追加してしまいました。すみません。

変数

次はゲームに影響した 130 行目について確認しましょう。数学や理科で目にする数式そのものです。使い方も同じで、左辺に右辺の内容が代入されます。数学や理科と違うのは、変数名を単語を羅列して内容がわかるような名称をつけるという点です。これを少し段階的に捉えましょう。

(問題)
箱の中に 小さな チョコが 8こずつ 4列 入っています。
おやつの 時間に まなぶくんは 3 こ、けいこちゃんは 2 こ 食べました。
箱の中に チョコは 何こ のこっていますか?

この問題を解く時に頭の中では、こんなことを考えたと思います。

  1. はじめに箱の中には 8 ✕ 4 個のチョコが入っていた
  2. ふたりが食べたチョコは 3 + 2 個だ
  3. つまり答えは、はじめに箱の中にあったチョコから、ふたりが食べたチョコの引けばいい

と。
1 ~ 3 の順番は人それぞれ違うかも知れませんが、考えるべきことはこの 3 点というところは概ね合意いただけるのではないかと思います。
次はこれを無理やり数式にします!

はじめに箱の中にはいっていたチョコ = 8 ✕ 4
ふたりが食べたチョコ = 3 + 2
箱の中に残ったチョコ = はじめに箱の中に入っていたチョコ - ふたりが食べたチョコ

ここです!プログラムに書かれているのは、まさに、この文章と数式の中間のような状態です!
はじめは慣れないかも知れませんが、単に「x」とか「y」と書かれるより、ずっと分かりやすいと思いませんか?

さて、これを実際の Python プログラムとして動かすためにはもう少し作業が必要です。

  1. 半角英数字のみに書き直す(ローマ字より、英語の方が好ましい)
  2. 変数名は単語をアンダーバー「_」で連結する
  3. 四則演算には「+-*/」を使う

実は日本語を変数名として使うことができます。(Python3)

ただ、仕事では一度も見たことがないですね。

# The number of chocolates that were in the box initially
number_of_chocolates_initially = 8 * 4
# The number of chocolates they ate
number_of_chocorates_they_ate = 3 + 2
# The number of chocolates left in the box
number_of_chocolates_left = number_of_chocolates_initially - number_of_chocorates_they_ate

変数名が全て小文字で構成されているのは Python の慣例です。
VS Code 上に書き写して実際に動かしてみましょう。適当なファイル(xxx.py)を作成して上記プログラムをコピペします。答えを確認するために 7、8 行目を追加しました。
結果は「27」でした。

結果を確認している様子

このように Python の変数も、数学と同じように値や結果に対して文字(名前)で表現する事ができますし、それを数式内で使用することができます。変数名には一定のルールが存在しますが、大部分はプログラマーの裁量に委ねられています。なるべく分かりやすい名前をつけてあげましょう。

  • 慣例に基づくルール
    • ASCII半角英数字(a~z、A~Z、0~9)とアンダーバー「_」を使う
    • 先頭に数字(0~9)は使えない
    • 予約語(for、def 等)は使えない

厳密なルールの詳細は、Python の本家サイトを参照して下さい。
Python 言語リファレンス – 2.3. 識別子 (identifier) およびキーワード (keyword)

“コメント” と同様に、プログラム中で使用する名称には気を配るとよいです。例えば今回、プレーヤーの所持コイン数を表す変数に「player_coin」という名称を付けましたが、これが「this_is_a_pen」や「x」だった場合はどうでしょう?ゲームが正しく動いたとしても、後から見返した時の分かりやすさが全然、違ってきますね。

初めのうちは面倒に感じるかも知れませんが、「英語の勉強もできて一石二鳥!」と自分に言い聞かせ、丁寧な名称を採用するようにしましょう。

補足

今回の記事では登場しませんでしたが、スロットゲームのプログラムは「random」というライブラリと、それに含まれる「randint」という機能を使用しています。これは Python インストール時に一緒に組み込まれたもので、その内容を確認することができます。手順は以下です。

  1. 74 行目の「randint」の部分を、キーボード [Ctrl] を押しながら、クリック
  2. ダイアログ中のファイル名をクリック
組み込みライブラリの random の内容をダイアログで表示

すると新しくタブが開き、「randint」機能の実際のプログラムを確認できるようになります。

組み込みライブラリ「random.py」を開いている様子

注目していただきたいのは、そのファイル中のいたるところに “コメント” があることです。
このプログラムを書いた人(達)は、Python の達人で、そもそも私なんかと比べ物にならないくらい頭のいい人に違いありません。そんな人(達)ですら、プログラム中に “コメント” を残しているのです。まだまだ素人の私達は積極的にコメントを残すようにしましょう。

コメント

タイトルとURLをコピーしました