基本中の基本でありつつも奥の深い分岐のifについてのエントリー
python if文の基礎
Pythonでは、if文を使用して条件に応じた処理を実行することができます。
if文は、特定の条件がTrueの場合にのみ処理を実行するために使用されます。構文は以下のようになります。
if 条件式:
処理1
else:
処理2
if文は、条件式がTrueの場合に、処理1を実行します。それ以外の場合は、処理2を実行します。
Pythonでは、if文は複数のブロックに分岐することができます。
if 条件式1:
処理1
elif 条件式2:
処理2
else:
処理3
if文は、条件式1がTrueの場合に処理1を実行し、条件式2がTrueの場合に処理2を実行し、それ以外の場合に処理3を実行することができます。
条件式には、比較演算子(>, <, ==, !=, >=, <=)、論理演算子(and, or, not)などを使用します。
TrueやFalseって何?
プログラミング言語でのTrueとFalseは、条件判定などで使用される論理値です。Trueは真、Falseは偽を表します。例えば、2 > 1 はTrue、1 > 2はFalseとなります。論理演算子を使用することで、複数の条件を組み合わせることもできます。
Trueは1
Falseは0
でも表されます。
TrueやFalseはプログラミング言語で使用される論理値であり、プログラムの条件分岐や繰り返しなどで使用されます。
一方、0や1は数値であり、計算や数学的な演算に使用されます。
しかし、論理値のTrueやFalseを数値の0や1に変換することができます。Trueは1に、Falseは0に変換されます。これはコンピュータ内部では0や1を使って論理値を扱っているためです。
pythonでif文を使って実際に動かしてみる
if文は条件に応じて処理を分岐するための文です。構文は以下のようになります。
if 条件式:
条件がTrueの場合に実行する処理
条件式には、TrueかFalseを返す式を指定します。TrueかFalseは、数値や文字列などの値を比較することで判定されます。
例えば、変数xが5より大きいかどうか判定する場合、以下のように書きます。
x = 10
if x > 5:
print("xは5より大きい")
if文には、elif、elseも組み合わせることができます。 elifは、ifの条件がFalseだった場合に別の条件を判定するために使用します。 elseは、すべての条件がFalseだった場合に実行する処理を指定します。
例えば、変数xが5より大きいか、5より小さいか、5と等しいかを判定する場合、以下のように書きます。
x = 10
if x > 5:
print("xは5より大きい")
elif x < 5:
print("xは5より小さい")
else:
print("xは5と等しい")
代表的なif文の使い方
比較演算子を使った場合
x = 10 y = 20 if x < y: print("xはyより小さい")
論理演算子を使った場合
x = 10 y = 20 z = 30 if x < y and x < z:
print("xはyとzより小さい")
elifを使った場合
x = 30 if x < 10:
print("xは10未満")
elif x < 20:
print("xは10以上20未満")
else:
print("xは20以上")
inを使った場合
colors = ['red', 'green', 'blue']
color = 'yellow'
if color in colors:
print(color + "はcolorsに含まれています")
else:
print(color + "はcolorsに含まれていません")
複数の条件を指定する場合
x = 10
y = 20
z = 30
if x < y < z:
print("xはyより小さく、yはzより小さい")
これらは、if文の代表的な使い方の一部です。複雑な条件を指定する場合には、論理演算子や比較演算子を使って、複数の条件を組み合わせることもできます。
pythonのifでもう少し複雑な条件を指定している例
複雑な条件を指定する例として、以下のようなコードが考えられます。
x = 10
y = 20
z = 30
if x < y and y < z:
print("xはyより小さく、yはzより小さいです")
elif x < y < z:
print("xはyより小さく、かつ、yはzより小さいです")
else:
print("xはy以上、または、yはz以上です")
このように、複数の条件をandやorで結合して、複雑な条件を指定することができます。また、elifを使って複数の条件を分岐することもできます。
pythonのif文で二つ以上の条件に当てはまる場合に実行する例(and)
二つ以上の条件に当てはまる場合をTrueとする場合は、論理演算子(and、or、not)を使って複数の条件を組み合わせることができます。
例えば、xが10以上かつyが20以上の場合をTrueとする場合は、以下のように記述します。
if x >= 10 and y >= 20:
print("xは10以上かつyは20以上です")
pythonのif文でどちらかがTrueの場合に実行する例(or)
xが10以上またはyが20以上の場合をTrueとする場合は、以下のように記述します。
if x >= 10 or y >= 20:
print("xは10以上またはyは20以上です")
pythonのif文でFalseの場合に実行する例(not)
notを使って条件を反転させることもできます。
if not x < 10:
print("xは10以上です")
ステップアップ:pythonでifと合わせて覚えておきたいコマンド
いままで出てきているandやnotと重複しますがこの辺りを抑えておくとより便利に使えます。
- elif: if文の中に複数の条件を指定する際に使用します。ifの条件がFalseだった場合に、次の条件をチェックします。
- not: 条件の否定を行います。例えば、xが0より大きいという条件をnotを使って表すと、xが0以下の条件になります。
- and: 複数の条件が共にTrueである場合にTrueを返します。
- or: 複数の条件のうち少なくとも1つがTrueの場合にTrueを返します。
- in: 指定したオブジェクトが、指定したシーケンスやコレクションに含まれているかどうかを判定するために使用します。例えば、指定した文字列がリストの要素のいずれかに含まれているかどうかを判定するために使用します。
- is: 指定したオブジェクトが、指定したオブジェクトと同一のインスタンスかどうかを判定するために使用します。例えば、指定した変数がNoneであるかどうかを判定するために使用します。
実例:ifやelif
x = 10 y = 20 if x < y: print("xはyより小さい") elif x == y: print("xはyと同じ") else: print("xはyより大きい")
実例:and
if (x > 0) and (y > 0): print("x,yは正の数") else: print("x,yは負の数か0")
listと合わせるととても便利なinとifの組み合わせ
inを使った例として、リストや文字列、辞書などのデータ型の要素を検索する場合があります。
例1: リストから特定の要素が含まれているかどうかを調べる
fruits = ['apple', 'banana', 'orange', 'kiwi']
if 'apple' in fruits:
print('appleが含まれています')
else:
print('appleは含まれていません')
実行結果:
appleが含まれています
例2: 文字列の中に特定の文字が含まれているかどうかを調べる
sentence = 'I am a student.'
if 'student' in sentence:
print('studentが含まれています')
else:
print('studentは含まれていません')
実行結果:
studentが含まれています
例3: 辞書から特定のキーが存在するかどうかを調べる
person = {'name':'John', 'age':30, 'city':'New York'}
if 'age' in person:
print('ageキーが存在します')
else:
print('ageキーは存在しません')
実行結果:
ageキーが存在します
オブジェクトの同一性を判断するisを使った組合せ
isを使った例としては、オブジェクトが同じかどうかを判定する場合があります。
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a is b) # False
print(a is c) # True
上記の例では、変数aとbは同じ値を持っていますが、別のオブジェクトとなっているため、a is bはFalseになります。一方、変数aとcは同じオブジェクトを参照しているため、a is cはTrueになります。
また、特殊な値(None、True、Falseなど)もisを使って判定することができます。
x = None
print(x is None) # True
y = True
print(y is True) # True
上記の例では、xがNoneであることを、yがTrueであることを判定しています。
これらを使ってif文で動かしてみましょう。
2つの変数が参照しているオブジェクトが同じかどうかを判定したい場合は、以下のようにif文とisを組み合わせることができます。
a = [1, 2, 3]
b = [1, 2, 3]
if a is b:
print("a and b refer to the same object.")
else:
print("a and b refer to different objects.")
上記の例では、aとbが参照しているリストが同じかどうかを判定しています。 結果は「a and b refer to different objects」となり、aとbが参照しているのは異なるオブジェクトであることが確認できます。
もう一つの例を示します。
a = [1, 2, 3]
b = a
if a is b:
print("a and b refer to the same object.")
else:
print("a and b refer to different objects.")
上記の例では、aとbが参照しているリストが同じかどうかを判定しています。 結果は「a and b refer to the same object」となり、aとbが参照しているのは同じオブジェクトであることが確認できます。
このように、if文とisを組み合わせることで、オブジェクトの同一性を判定することができます。
さらにステップアップ:三項演算子
三項演算子(ternary operator)も使用することができます。三項演算子は、条件式がTrueかFalseかで、それぞれ異なる値を返すことができる短い書き方を提供します。
# 三項演算子の例
x = 5
y = 10 if x > 0 else 20
print(y)
# xが0より大きいので、yに10が代入される
このように三項演算子を使用することで、簡潔にif文を書くことができます。
もっと効率よくif文を書けないかなと悩んだときに考えること
if文をもっと効率よく書くことはできますが、それはプログラムの設計や実装によって異なります。
1つの方法として、条件分岐を行う場合には、if-elif-else構文を使用することで、特定の条件に当てはまった場合に早期に処理を終了することができます。
また、条件が複雑な場合は、関数やクラスを使用して条件分岐を封装することで、コードをスッキリさせることもできます。
可読性はとても重視したいポイントです。
また、辞書や集合などのデータ構造を使用することで、特定の値が存在するかどうかをO(1)で判定することができます。
その他、リファクタリングや機能の抽象化などを行うことで、if文をもっと効率よく書くことができることもあります。
リファクタリングや抽象化は話が広がりすぎるので↓をご覧ください。
コメント