Python15分講座 #2 (FizzBuzz、for文、リスト内包表記)

FizzBuzz

>>> def playFizzBuzz(num):
	if num%3 == 0 and num%5 == 0:
		print('FizzBuzz')
	elif num%3 == 0:
		print('Fizz')
	elif num%5 == 0:
		print('Buzz')
	else:
		print(num)

<実行結果>

>>> playFizzBuzz(15)
FizzBuzz
>>> playFizzBuzz(3)
Fizz
>>> playFizzBuzz(2)
2

書いてみて、SyntaxErrorの嵐でしたw(上のコードは正しいです)
注意する点、引っかかった点は

・変数に型を指定しない。(つい癖で「int num」とか書いちゃう)
・if文の条件式のかっこは無くてもいい。(あってもいいけど無くていいなら書かない)
・else if は elif。(そこ略すんだ・・・!)

/************************************************/

配列
配列という名前のものはありません。
代わりにリストとタプルとディクショナリがあります。
今回は簡単に。

◆リスト

Javaでいうリストとほぼ同じ。
要素にはいろいろな型の要素を混在させることも可能。
list = [1, 'hoge', 3]

◆タプル

・タプルは要素の追加や変更が不可。
・タプルを連結して新しいタプルを作ることは可能。
要素にはいろいろな型の要素を混在させることも可能。
tuple = (1, 2, 'foo')

◆ディクショナリー

辞書。
連想配列やHashMapのイメージです。
書式:{キー1:値1, キー2:値2, ...}

dict = {'foo':1, 'bar':2}

/************************************************/

for文
他言語で言うforeach的なものしかないようです。
こんな風に書きます。

>>> hoge = [1, 2, 3, 4, 5]
>>> for i in hoge:
	print( i )

でも、i = 0〜9で単にループを回したいだけなのに
わざわざリストを自分で作らなきゃいけない・・・?
と、思ったらちゃんと便利なやつがいました。

◆range()関数
range()関数を使うとおもしろいことができます。

# リストの初期化
>>> list = []
# 0-49までの数字をlistに追加
>>> for i in range(50):
	list.append(i)

>>> print(list)

<実行結果>

[0, 1, 2, 3・・・49]

# リストの初期化
>>> list = []
# 5-49までの数字をlistに追加
>>> for i in range(5, 50):
	print(i)

>>> print(list)

<実行結果>

[5, 6, 7・・・49]

# リストの初期化
>>> list = []
# 5-49までの数字を1個飛ばしでlistに追加
>>> for i in range(5, 50, 2):
	print(i)

>>> print(list)

<実行結果>

[5, 7, 9・・・49]



/************************************************/
リスト内包表記
たとえば、Java
「0〜99」までの要素が格納されたリストを作る場合

// Javaのコード
List listhoge = new ArrayList();
for(int i = 0; i < 100; i++){
    listhoge.add(i);
}


といった風に書きますが、これがPythonだと

# Pythonのコード
listhoge = [i for i in range(100)]


なんと1行で書けるという・・・

iを10倍した数を入れたいなら

listhoge = [i*10 for i in range(100)]


elifといい、インデントといい、リスト内包表記といい
Pythonを作った人はコードのスマートさを重視していたのでしょうか。


elif・・・


Pythonに慣れてる人は「えりふ」って読んだりするのかな。。。


一癖ある蛇だがそれがいい