はじめに
Pythonの文法について基本的な部分を「1日でマスター」と題して一気に書いていきます。
この後編では、演算子、制御文(繰り返し、条件文)について記述します。
Pythonを実行するにあたり、anacondaを公式サイトからダウンロードしてインストールします。プログラムの実行は、anaconda Powershell Promptを使います。
プログラム実行環境ができたらpythonの文法に入ります。
前編では、pythonプログラムの構成、変数、リスト、タプル、辞書、関数について記載しています。
その内容については前編をご覧ください。
演算子
演算子とは、値を変数に格納したり四則演算、変数や数値の比較などを行うときに使う記号です。値を変数に代入する「代入演算子」や「複合代入演算子」、四則演算子などの計算をする「算術演算子」や「モジュロ演算子」、条件として使用する「関係演算子」や「論理演算子」、ビット単位の計算をする「ビット演算子」があります。
算術演算子、代入演算子は次のようなものがあります。
演算子 | 演算 | 説明 |
+ | 和 | 足し算 |
– | 差 | 引き算 |
* | 積 | 掛け算 |
/ | 徐 | 割り算 |
% | 余 | 割り算の余り(整数に対して有効) |
= | 代入 | 右辺を左辺に代入 |
+= | 和+代入 | A+=B → A=A+B |
-= | 差+代入 | A-=B → A=A-B |
*= | 積+代入 | A*=B → A=A*B |
/= | 徐+代入 | A/=B → A=A/B |
>>> a=1.0
>>> b=2.0
>>> add=a+b
>>> sub=a-b
>>> mul=a*b
>>> div=a/b
>>> mod=a%b
>>>print("add=",add,"sub=",sub,"mul=",mul,"div=",div,"mod=",mod)
>>> add += add
>>> sub -= sub
>>> mul *= mul
>>> div /= div
>>> print("add=",add,"sub=",sub,"mul=",mul,"div=",div,"mod=",mod)
add= 3.0 sub= -1.0 mul= 2.0 div= 0.5 mod= 1.0
add= 6.0 sub= 0.0 mul= 4.0 div= 1.0 mod= 1.0
関係演算子は条件文の条件式に使用します。
演算が成立する(真)の場合、演算結果として「True」を返します。
逆に演算が成立しない(偽)の場合、演算結果として「False」を返します。
関係演算子は次のようなものがあります。
演算子 | 演算 | 説明 |
> | 大なり | A>B 右辺Bが左辺Aより大きいかを比較する |
>= | 大なりイコール | A>=B 右辺Bが左辺A以上かを比較する |
< | 小なり | A<B 右辺Bが左辺Aより小さいかを比較する |
<= | 小なりイコール | A<=B 右辺Bが左辺A以下かを比較する |
== | イコール | A==B 右辺Bと左辺Aが等しいかを比較する |
!= | ノットイコール | A!=B 右辺Bと左辺Aが異なるかを比較する |
>>> a=1
>>> b=2
>>> c=1
>>> print(a<b,a>b,a>=c)
>>> print(a==c,a==b,a!=c)
True False True
True False False
論理演算子は、条件文の条件式に使用します。
演算が成立する(真)場合、「True」を返します。
演算が成立しない(偽)場合、「False」を返します。
演算子 | 演算 | 説明 |
AND | AND | A AND B 右辺Bかつ左辺A |
OR | OR | A OR B 右辺Bまたは左辺A |
>>> a=1
>>> b=2
>>>
>>> print((a<b)and(a>b))
>>>
>>> print((a<b)or(a>b))
>>>
False
True
ビット演算子は、ビット単位の計算をするときに使用します。
演算子 | 演算 | 説明 |
& | ビットAND | ビットごとのAND(論理積) |
| | ビットOR | ビットごとのOR(論理和) |
^ | ビットEXOR | ビットごとのEXOR(排他的論理和) |
~ | 反転 | ビット反転 |
<< | 左シフト | 左ビットシフト |
>> | 右シフト | 右ビットシフト |
>>> a=0b11111111
>>> bit0=0b00000001
>>> bit1=0b00000010
>>> bit2=0b00000100
>>> bit3=0b00001000
>>>
>>> print(format((a&bit0),'b’))
>>> print(format((a|bit0),'b’))
>>> print(format((a^bit0),'b'))
>>> print(format((~a),'b'))
>>> print(format((~bit0),'b'))
>>> print(format((bit2>>1),'b'))
>>> print(format((bit3>>1),'b'))
>>> print(format((bit2<<1),'b'))
>>> print(format((bit3<<1),'b'))
1
11111111
11111110
-100000000
-10
10
100
1000
10000
pythonの反転は変数が無限桁の使用であることより上位ビットが1で埋められます。
そのため、結果を出力するとマイナスとなります。
各演算子の処理優先度をまとめると以下のような表になります。
制御文-繰り返し-
while文は処理の繰り返しを行います。
終了条件が「True(真):1」の場合、「処理」を実行します。
終了条件は、繰り返し処理前に判断されます。
インデントは、タブスペースです。スペースのある行はwhile文内の処理になります。
>>> i=10
>>> while i:
... print(i)
... i-=1
...
10
9
8
7
6
5
4
3
2
1
>>> def power(base,n): #baseのn乗を計算するプログラム
... p=1
... i=1
... while(i<=n):
... p=p*base
... i+=1
... return p
...
>>> power(4,2)
16
>>> (2,3)
(2, 3)
>>> power(2,3)
8
>>> power(3,2)
9
>>> power(3,3)
27
繰り返しには、もうひとつfor文があります。
for文はオブジェクトの先頭の値が代入され、オブジェクトの終了まで処理を繰り返します。
>>> for i in range(0,10):
... print(i)
...
0
1
2
3
4
5
6
7
8
9
>>> color=["red","green","blue"]
>>> for c in color:
... print(c)
...
red
green
blue
>>> city=("tokyo","kanagawa","saitama","chiba")
>>> for c in city:
... print(c)
...
tokyo
kanagawa
saitama
chiba
制御文-条件文-
条件文は、「if」、「else」、「elif」という制御文からなります。
if文は、条件が「True(真)」の場合、「処理」が実行されます。
条件が「False(偽)」の場合は、「処理」が実行されません。
条件文の「処理」部分は、インデント(タブスペース)の行で有効になります。
if-else文は次のような記述になります。
条件が「True(真)」の場合、「処理1」が実行されます。
逆に条件が「False(偽)」の場合は、「処理2」が実行されます。
if-else if文は、「if」と「elif」という制御文で実行します。
条件1が「True(真)」の場合、「処理1」が実行されます。
条件1が「False(偽)」の場合、続いて条件2が評価されます。
条件2が「True(真)」の場合は、「処理2」が実行され、条件2が「False(偽)」の場合は条件内の処理は実行されません。
処理の条件は、この「if」、「elif」、「else」を組み合わせて作成します。
>>> i=0
>>> if i==0:
... print(i)
... elif i==1:
... print(i)
... else:
... print("other number")
...
0
>>> i=1
>>> if i==0:
... print(i)
... elif i==1:
... print(i)
... else:
... print("other number")
...
1
>>> i=2
>>> if i==0:
... print(i)
... elif i==1:
... print(i)
... else:
... print("other number")
...
other number
おわりに
Pythonの文法を1日でマスターする前編と後編でpythonプログラムの基本的な文法を確認しました。この先にはオブジェクト指向の部分でクラスの習得がありますが、それはまた別記事にまとめたいと思います。
コメント