Python勉強記(5)- 演算子
演算子
Pythonの演算子一覧。
他のプログラム言語と共通なものと、そうでないものがあります。
2列目のものは公式ドキュメント「演算子」直下の「トークン」に含まれますが、プログラム言語では一般的に演算子に入るので、載せておきました。
(演算+代入=累積代入演算子)
論理演算子がありませんね。
Pythonではand, or, not などのキーワードになっています。
文字列
文字列の連結は'+'で行います。
>>> a = "Hello"
>>> a = a + ",world"
>>> a
'Hello,world'
上のような同じ変数への連結は「+=」を使ってより簡単に書けます。
>>> a = "Hello"
>>> a += ",world"
>>> a
'Hello,world'
演算とは言いませんが、文字列からある文字列を取り出すには「 [ ] や[ : ]」を使用します。この操作をスライスと言います。
>>> a
'Hello,world'
>>> a[0] # 先頭の文字
'H'
>>> a[0:4] # 先頭4文字
'Hell'
>>> a[0:5] # 全島5文字
'Hello'
>>> a[-1] # 最終文字
'd'
スライスでは終わりの文字の指定が直感と異なることに注意。
上の例ではこんな感じになります。
・先頭はa[0], 終わりはa[-1]。
・a[0:5] でa[0]~a[4]の5個が取り出される。
算術演算
演算子は他言語(や数学)とほぼ同じで、あまり迷うことはありません。
加算「+」、減算「-」、乗算(*)
>>> a = 1
>>> b = 2
>>> c = 3.0
>>> type(a) #変数の型を確認。
<class 'int'>
>>> type(c)
<class 'float'>
>>> a + b # int + int = int
3
>>> a + c # int + float = float
4.0
>>> a += c # a = a + c
>>> a
4.0
除算はちょっと注意が必要。
普通の除算「/」はint 同士で割り切れてもfloatになります。
int の除算をやりたい場合は、以下のようになります。
・「//」:int 同士の除算(小数以下切り捨て)
・「%」:「//」したときの余り。
>>> a = 4
>>> b = 2
>>> a / b # int / int = float
2.0
>>> c = 3
>>> a // c # int // int = int
1
>>> a % c
1
べき乗「**」
数学でも同じですが、べき乗は右結合(右から計算する)なので注意。
左から計算したいときはカッコを使います。
>>> a = 2
>>> b = 3
>>> c = 4
>>> a ** b
8
>>> a ** b ** c # a ** (b ** c)
2417851639229258349412352
>>> (a ** b) ** c
4096
乗数がfloat の場合も数学と同じなので安心。
>>> a = 2 # sqrt(2) を計算する。
>>> b = 0.5
>>> a ** b
1.4142135623730951
>>>
複素数の四則演算を一通りためしました。
複素数の除算は公式と同じになるか、実部と虚部を検算しておきます。
>>> a = 1 + 2j
>>> b = 3 + 4j
>>> a + b
(4+6j)
>>> a - b
(-2-2j)
>>> a * b
(-5+10j)
>>> a / b
(0.44+0.08j)
>>> (1*3+2*4) / (3**2+4**2) # Re(a / b)
0.44
>>> (2*3-1*4) / (3**2+4**2) #Im(a / b)
0.08
>>>
比較演算とbool型
意味は他言語と全く同じです。
比較した後bool値(TrueまたはFalse)を返します。
大小:「>」(greater) 、「>=」(greater or equal)、「<」(smaller)、「<=」(smaller or equal)
等しい:「==」(equal)、「!=」(not equal)
>>> 2 > 1
True
>>> 2 >= 1
True
>>> 2 <= 1
False
>>> 2 < 1
False
>>> 2 == 1
False
>>> 2 != 1
True
>>>
比較ができないものについてはエラーを返します。
>>> a = 1 + 2j
>>> b = 3 + 4j
>>> a > b # 複素数どうしの大小は比較不能。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'complex' and 'complex'
>>> a == b
False
>>> a != b
True
比較演算は論理演算子と組み合わせて条件式として使用されます。
比較演算は論理演算より優先度が高いため、下記の例では比較条件のカッコは不要ですが、このような例ではカッコを付けた方がわかりやすいと、個人的には思います。
>>> a = 2
>>> b = 1
>>> (a > b) and (a < b) # greater and smaller = False
False
>>> (a > b) or (a < b) # greater or smaller = True
True
>>> (a > b) and (a != b)
True
>>>
(続き)関数など
当初、続けて書くつもりでしたが、演算子だけで結構おなか一杯なので、続きは次回。
次回からやっとプログラム言語としての説明ができそうです。
まだ説明できていない型(リスト、タブルなど)についても、徐々に書いていくつもりです。
この記事が気に入ったらサポートをしてみませんか?