Pythonの文法の基本を1日でマスターする(後編)

python

はじめに

Pythonの文法について基本的な部分を「1日でマスター」と題して一気に書いていきます。

この後編では、演算子、制御文(繰り返し、条件文)について記述します。

Pythonを実行するにあたり、anacondaを公式サイトからダウンロードしてインストールします。プログラムの実行は、anaconda Powershell Promptを使います。

Attention Required! | Cloudflare

プログラム実行環境ができたらpythonの文法に入ります。

前編では、pythonプログラムの構成、変数、リスト、タプル、辞書、関数について記載しています。

その内容については前編をご覧ください。

Pythonの文法の基本を1日でマスターする(前編)
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」を返します。

演算子演算説明
ANDANDA AND B 右辺Bかつ左辺A
ORORA 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プログラムの基本的な文法を確認しました。この先にはオブジェクト指向の部分でクラスの習得がありますが、それはまた別記事にまとめたいと思います。

コメント

タイトルとURLをコピーしました