Pythonの勉強 #2 (「みんなのPython」Chapter 1-5)

Pythonの勉強、一ヶ月近くやってなかったのか…何やってたんだ俺は…。

if文

>>> number = 10
>>> if number == 10 and type(number) == int:
	print "numberは整数の10です"
    elif number == 5 or type(number) == int:
	print "numberは5か整数だよ"
    else:
	print "numberは整数の10じゃないよ"

	
numberは整数の10です
>>> 

「&&」とか「||」とかない。

比較演算子

演算子 説明
x == y xとyが等しいときTrue
x != y, x <> y xとyが等しくないときTrue
x in y xがyというシーケンスに含まれてたらTrue
not 「not x == y」なら「xがyと等しくなかったら」

andとorの優先順位

orは足し算、andはかけ算っぽいらしい。

>>> age = 0
>>> if (age <= 18 or age >= 65) and age != 0:
	print "True"
    else:
	print "False"

False
>>> 

組み込み型の比較

>>> list = [1, 2, 3, 4]
>>> list == [1, 2, 3, 4]
True
>>> list == [4, 2, 1, 3]
False
>>> 

find()メソッド

文字列中に特定の文字列が含まれてたらそのインデックスを、そうでない場合は-1を返す。

>>> a = "I am Sam."
>>> if a.find("Sam") != -1:
	print "「Sam」発見"

	
「Sam」発見
>>> 

in

上のfind()メソッドと同じような効果が得られる。比較演算子

>>> a = "I am Sam."
>>> if "Sam" in a:
	print "「Sam」見つけた"

	
「Sam」見つけた
>>> 

for文

PerlのforeachとかRubyのeachっぽい動きをするらしい。Perlにforeachってあったんだ。繰り返しを指定してループを実行する場合はrange()関数を使うと便利。

>>> seq = range(10) # 0から9まで、10個の要素を持つリストを作成
>>> seq
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for item in seq: # for item in range(10)って書いた方がカコイイ
	print item

	
0
1
2
3
4
5
6
7
8
9
>>> item
9
>>> 

「i = 0; i < 10; i++」とかよりわかりやすくていいね!

range()関数

引数を2つ3つにすると挙動が変わるみたい。

>>> for rena in range(150, 155):
	print "嘘だッ!!!×", rena

	
嘘だッ!!!× 150
嘘だッ!!!× 151
嘘だッ!!!× 152
嘘だッ!!!× 153
嘘だッ!!!× 154
>>> 
>>> for mion in range(1, 6, 3):
	print mion, "代目 園崎家当主です。"

	
1 代目 園崎家当主です。
4 代目 園崎家当主です。
>>> 

ん、なんか変数と文字列の間に半角空白が…。というわけで少し調べた。

出力系の現在の書き出し位置が行頭にあると考えられる場合を除き、各オブジェクトの出力前にスペースが一つ出力されます。

6.6 print 文

へー。英語圏の人には便利なのかな。よくわからないけど。
半角空白が気持ち悪かったので以下のように文字列連結をするように修正。

>>> for mion in range(1, 6, 3):
	print str(mion) + "代目 園崎家当主です。"

	
1代目 園崎家当主です。
4代目 園崎家当主です。
>>> 

ちなみに

>>> for rena in range(150, 145): # 150から144まで
	print "嘘だッ!!!×" + str(rena)

	
>>> 

なんも表示されませんでした。引数を4つにすると

>>> for rena in range(1, 10, 2, 5):
	print "嘘だッ!!!×" + str(rena)

	

Traceback (most recent call last):
  File "", line 1, in 
    for rena in range(1, 10, 2, 5):
TypeError: range expected at most 3 arguments, got 4
>>> 

エラー文がわかりやすいなぁ。