勉強のための勉強
が必要です。
数学を学ぶ前には鉛筆の削り方を知らなければいけませんし、プログラミングを学ぶ前にはプログラムの試し方・見方を知らなければいけません。
今回は、以降の勉強のための必須知識をまとめて説明しますね
今の段階では、いずれも学習に必要な最低限の深さしか説明しませんのでご安心ください。
エラー
エラーとは、予期しない状態になった場合に発生するものです。プログラム君に怒られていると思ってください。
例えば、以下のコードはエラーを引き起こします(なぜエラーになるかは(型)[/型]の章でお話します)
1 / 0
実行した方はZeroDivisionError: division by zero
といった文字が見えたかもしれません。これがエラーです!人生初エラーですね!
これからのプログラマー人生で数えきれないエラーを引き起こすことになるので、今のうちに覚悟しておきましょう。
エラーの読み方
先ほどのエラー
ZeroDivisionError: division by zero
は日本語にすると0除算エラー: 0で割り算をしようとした
という意味です。
つまり、0で割り算をしてはいけない、という情報が分かるわけですね。あるいは、それを知ってても気付かないうちに0で割ってしまっていることに気付けます。
さらに、コードのどの部分でエラーが発生したかまでご丁寧に書いてくれています。時々、エラーの中身を見ずにどうにかしようとする方がいますが、それではいけません!
プログラム君(厳密にはインタープリタ君と言いますが、それはどこかで話しましょう)が頑張ってエラーの原因を分かりやすく教えようとしてくれているのに、無下にしたらかわいそうです
冗談はおいても、プログラミング言語を作るときのエラー処理はすごく面倒なのです。言語開発者の苦労を労うためにも、エラーメッセージはちゃんと読みましょう!
コメントアウト
コメントアウトとは「プログラムに実行してほしくないけれど、後で見る人のために情報を残しておきたいときのためにコメントを残しておく」ことです。
Pythonでは、#
以降の文字列をコメントアウトします。
42
# 知ってましたか?これが「生命、宇宙、そして万物についての究極の疑問の答え」です
# こんな感じで `#` を使うと、それ以降を無視してくれます。
# 1 / 0
1 / 0
# もし外してしまうと、こんな感じでエラーになります。
# 実行してみてね!
コメントアウトは主に - 複雑な処理に説明を付ける - プログラムのうち、一旦実行させたくないものを削除せずに無効化する といった目的のために使います。
昔書いたコードをもう一度読み込んで意味を理解する時間はもったいないですし、他人にコードを読んでもらう時に意図の説明がなければさっぱり検討がつかないこともあります。
再利用可能なコードにするために、コメントアウトを適切に使いましょう
変数
さっそく耳慣れない言葉が飛び出してきましたね。変数(variable)とは、あるデータを入れておく箱のことです。
ある情報をどこかに保存しておきたいときに、それを後から使うことができます。
use_later = 5 # この数字は後で使う
use_later # これを 5 として使える
use_later + 4 # 5+4 と同じなので、答えは9になる
変数にデータを入れることを 代入(substitution) といいます。
Pythonでは(というか、ほとんどのプログラミング言語でもそうですが)代入は変数名 = 値
という書き方です。
現実世界では=
は「同じ値かどうか」を意味するのでちょっとなれないかもしれないですが、頑張ってください
変数名には一定のルールがあります。厳密にはいろんな文字列が使えますが、まずは以下のルールを覚えておくとよいでしょう
- 1文字目は英字
a,b,...,y,z
から始めましょう - 2文字目以降は英字に加えて数字
0,1,2,...,8,9
, アンダースコア_
も使えます
つまり、以下のような感じですね
# good
data = 1
data_2 = data + 1
data_to_use = data_2 + 1
d = data_to_use + 1
# bad
2data = data + 1 # 整数から始めることはできません!
3 = data + 1 # 整数に整数を代入することはできません!
正規表現で述べるところの [a-z][a-z0-9_]*
という感じです。正規表現は別の章で述べるので今わからなくても問題ありません!!
正規表現って?
正規表現(Regular Expression)とは、文字列の集合を表現するための記法です。
ここで文字列の集合といったのは、1つの正規表現で様々な文字列を表現できることを意味しています。たとえば、
[a-zA-Z]
は英字の集合を表すことができ、 a~z + A~Z の計52文字が含まれています。
たった8文字の正規表現で52文字表現できるというのはありがたいですね。また、
[a-z]+
は1文字以上の小文字英単語の集合を表すことができます。cat
,python
,pocketmonster
なんかも含まれています。正規表現はプログラム内に便利な形で取り込まれており、これらを用いて検索・置換などができます。
マスターすれば、より柔軟に文字列操作ができますね!