Python15分講座 #2 (FizzBuzz、for文、リスト内包表記)
>>> 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に慣れてる人は「えりふ」って読んだりするのかな。。。
一癖ある蛇だがそれがいい。