私が習得した開発言語はC言語から始まり、VBA、Java、C#、Swift、Kotlinと色々ありますが、どれも構文がC言語に近いので習得するのはあまり苦ではありませんでした。
Pythonは初めて使いますが、これもC言語と通じるところはあるようです。
ただ、大きく異なる箇所もあるのでベースの知識であるC言語と比較しながら勉強していきたいと思います。
Pythonのバージョンによって書き方が異なる部分があるようですが、現時点の最新バージョンであるPython3.6で書いていきます。
※コードを自分の環境で確認しながら書いていますが、私のPython環境はWindows10 64bit、Visual Studio 2017 Community、Python 3.6です。
もしそのまま書いてエラー等出るようでしたら環境の違いが原因の場合があります。
目次
変数
まずは変数宣言からです。
int a = 0; int b; b = 1; a = b;
a = 0 b = 1 a = b
C言語では変数に対して型を宣言する必要があり、末尾に;が必要です。
また、値が無くても型だけ宣言する事ができます。
それに対してPythonではかならず宣言時に値を入力する必要があり、値無しの宣言はできません。
型は値の入力時に自動的に決まる為、型宣言は不要です。
末尾の;も不要です。
コメント
//この行がコメント /* この間全部が コメント扱い */
#この行がコメント """ この間全部が コメント扱い """ ''' これでも 良い '''
コメント化した部分はプログラムとしては無視されます。
注釈を書いたり、一時的にコード無効化する時等に使用します。
Pythonでは#の右側がコメント化されます。
複数行まとめてコメント化する場合は"か'を3つ連続で書いたもので挟みます。
変数型
宣言時に型は明示しませんが、型が無い訳ではありません。
大きく分けると数値型と文字列型の2つに分類されます。
数値型
数値は整数型(int)、小数点型(float)、複素数型(complex)に分けられます。
複素数型は特殊な用途で無いと使う事は無いでしょう。
a = 1 #整数型:int b = 2.1 #小数点型:float c = 2 +2j #複素数型:complex
文字列型
文字列型(str)は"か'で括った中身が文字列となります。
JavaやC#に慣れている型は""の方で良いと思います。
"""か'''で括ると、改行を含む事ができます。
string = "文字列です" string = 'This is String type too.' string = """文字列1行目。 改行して2行目。"""
演算
論理演算(ブール演算)
C言語ではor, and, notにそれぞれ対応した演算子がありましたが、Pythonでは記号では無く文字でそのまま表記します。
a || b //aとb片方がtrueのときtrue a && b //aとb両方trueのときtrue !a //aが偽ならtrue, それ以外ならfalse
a or b #aとb片方がtrueのときtrue a and b #aとb両方trueのときtrue not a #aが偽ならtrue, それ以外ならfalse
代数演算(四則演算等)
これはだいたい同じなので、違うやつだけ書きます。
a ** b #aのb乗 a // b #aをbで割って、整数に丸める(結果が正の場合小数点以下切り捨て、負の場合は小数点以下切り上げ)
比較演算
これもだいたい同じです。オブジェクトを比較できる所が違います。
a is b #aとbが同じオブジェクトの時true、それ以外false a is not b #aとbが異なるオブジェクトの時true、それ以外false
基本制御構文(if, for, while)
基本的な制御文である分岐(if文)と繰り返し(for文、while文)を比較します。
C言語では分岐文はifとswitchがありましたが、Pythonではif文しかありません。
比較対象が多い場合でもifで書く必要があります。
if文(分岐)
int a = 10; int b= 5; if (a < 10){ //処理A } else if (b > 5){ //処理B } else { //処理A //処理B } //処理C
a = 10 b = 5 if a > 10: #処理A elif b >5: #処理B else: #処理A #処理B #処理C
C言語の場合は条件式を()で括る必要がありますが、Pythonでは不要です。
ただ、条件式の末尾に:をつける必要があります。
ステートメントブロックはC言語の場合は{}で括られた中身になりますが、Pythonの場合はインデントを揃えてる部分がステートメントブロックとして扱われます。
インデントがずれている場合、意図しない動作をしたりエラーとなる事がある為、注意しましょう。
私はPythonのこの仕様は嫌いですね。
インデントを揃えるのは当たり前だし、{}で明示的に括られている方が分かりやすいと思うのはJavaやC#に慣れているからでしょうか…
ちなみに上記のPythonの例では処理の部分はコメントしか書いていませんが、実際の処理が書かれていないとエラーとなるようです。
for文(繰り返し)
for文はC言語と結構違います。どちらかというとC#のforeach文と類似しています。
int a[] = { 0, 1, 2 }; int i; int loop; for (i = 0; i < 3; i ++){ loop = a[i]; //任意の処理 }
int[] a = new int [] { 0, 1, 2 } foreach (int loop in a){ //繰り返し毎にaの要素が1つずつずれてloopに入る //任意の処理 }
for loop in [ 0, 1, 2 ]: #繰り返し毎に[]内の要素が1つずつずれてloopに入る #任意の処理
while文(繰り返し)
while文はだいたい同じです。
int a = 0; while (a < 4){ a = a + 1; }
a = 0 while a < 4: a = a + 1
繰り返しの停止(break)
繰り返しを止める時はC言語と同様、breakを入れればOKです。
関数
定義の仕方は異なりますが、使い方は同じです。
定義元の関数の中身を見ないと型が分からない仕様は扱いづらいですね…
型が違うものを演算させるとクラッシュする場合もあるのでここは注意が必要です。
//引数、戻り値無し void function(void){ //処理 } function(); //引数無し、戻り値あり int function(void){ //処理 return 0; } int a = function(); //引数、戻り値あり int function(int arg){ //処理 return arg; } int a = function(1);
#引数、戻り値無し def function(): #処理 function() #引数無し、戻り値あり def function(): #処理 return 0 a = function() #引数、戻り値あり def function(arg): #処理 return arg a = function(1)
まとめ
Pythonはまだまだ色々な書き方や機能がありますが、全てを網羅するのは大変なので今回はここまでにします。
これだけ分かっていれば基本的で小規模なプログラムなら書けるはずです。
他の機能はプログラムを書きながら困った時に検索して調べながら勉強していきましょう。