EeBlog(テクニカルブログ)

AI(人工知能)実践 第2回 他言語経験者向けPython入門2

AI(人工知能)実践 第2回です。
前回(他言語経験者向けPython入門)の続きになります。
 

5.言語の細かい差について

・変数宣言(型付け)について

Pythonでは動的型付けとなっているため、変数宣言の際に型を明記する必要がありません。
JavaやC等の言語では、基本的には静的型付けとなっている為、比較すると下記のような形となります。
 
静的型付け:

int num = 3;
String text = "文字列";

動的型付け:

num = 3
text = "文字列"

・文の終了文字(;)について

PythonではJavaのように「;」で文章の終わりを示す必要がありません。
しかし、「;」を付けてもエラーではなく、「n = 1;m =2;」のように1行に複数のステップを入れることも可能です。
ただし、ソースコードが非常に読みづらくなるため、基本的には上記のような書き方はせず、改行を入れることをお勧めします。
 

・if文について

JavaやCでは、if文では、「if」「else if」「else」を使用しますが、
Pythonでは、上記の「else if」に当たる部分が「elif」となります。
また、処理の範囲としてJavaでは「{}」を使っていますが、Pythonでは「:」を付けた後に、同一インデントにすることで処理範囲を決めます。
なお、「{}」で処理を囲わないので、何もしない場合は「pass」と記載し、何もしないことを明記します。
 
例:※elseは不要ですが、「pass」を書く為だけに記載しています。

num = 3
if(num % 2 == 1):
    print(num)
    print('奇数')
elif(num % 2 == 0):
    print(num)
    print('偶数')
else:
    pass

・for文について

Pythonのfor文は、Javaにおける拡張for文に該当するものしか存在しません。
よって、for(初期化式; 条件式; 変化式){}といった形式では記載出来ません。
具体的な使い方としては、下記のような形で記載します。
 
for 変数名 in 配列
for 変数名 in range(繰り返し数)
for 変数名(index),変数(要素) in enumrate(配列)
 

・for文におけるelse句について

Pythonでは、for文自体にelse句を付けることが出来ます。
for文にelse句を付けた場合、for文が終了した場合にelseで記載された処理が実行されます。
但し、for文がbreakされた場合には実行されません。
 
例:※breakされずにelseに入るパターン

for i in range(0,3):
    print(i)
    if(i == 10):
        print('break')
        break
else:
    print('else')

実行結果:
0
1
2
else
 
例:※breakされてelseに入らないパターン

for i in range(0,3):
    print(i)
    if(i == 2):
        print('break')
        break
else:
    print('else')

実行結果:
0
1
2
break
 

・ブロック単位でインデントが違うとエラーになる

同一ブロック内でインデントが違うとエラーとなります。
ブロックが違う場合にはエラーとなりません。

例1:a、b、printが同一ブロックでbのインデントが違っているため、NG

a = 1
  b = 2
print(a)

例2:※if-elif-elseのブロックでelifのインデントが違っているため、NG

a = 1
if(a % 2 == 1):
    print('奇数')
    elif(a % 2 == 0):
        print('偶数')

例3:※elif内のインデントが共通であればエラーにはならない

a = 1
if(a % 2 == 1):
    print('奇数')
elif(a % 2 == 0):
                                       print('偶数')

第3回へと続きます。