if, for, whileで使う演算子
比較演算子


演算子 | 例 | 意味 |
---|---|---|
< | x < y | x は y より小さいとTrue、そうでないとFalse |
> | x > y | x は y より大きいとTrue、そうでないとFlase |
<= | x <= y | x は y以下だとTrue、そうでないとFalse |
>= | x >= y | x は y以上だとTrue、そうでないとFalse |
== | x == y | x と yは同値だとTrue、そうでないとFalse |
!= | x != y | x と yは同値でないとTrue、そうでないとFalse |
is | x is y | xとyは同じidである、xとyは同一であるとTrue、そうでないとFalse |
is not | x is not y | xとyは同じidでない、xとyは同一でないとTrue、そうでないとFalse |
in | x in y | xはyに含まれるとTrue、そうでないとFalse |
not in | x not in y | xはyに含まれないTrue、そうでないとFalse |
真偽値

真偽値を使うことで条件式を組み合わせることができます。
演算子 | 例 | 結果 |
---|---|---|
or | x or y | xとyのどちらかがTrueだったらTrue、そうでなければFalse |
and | x and y | xとyがTrueならTrue、そうでなければFalse |
not | not x | xがFalseならTrue、xがTrueならFalseになる |
if文

・pythonなどの言語は、インデントでブロックを表します。
・cやjavaなどの言語は、{}でブロックを表します。
上記のコードにおいて、print() 関数の部分はインデントが使われています。インデントはタブや (複数個の) スペース (半角スペース4つが推奨される) を使って表し、インデントがなされた部分をブロックといいます。if文やfor文で実行されるのはブロックに書かれた文です。ブロックの各行は同じ数 (深さ) だけインデントされていなければならないので注意してください。
if文だけでなく、for文や後の節で紹介するクラスの定義等でもインデントを用いてブロックを作る必要があるので、インデントの有無に気をつけながらテキストを読むようにしましょう。
pythonのif文
x = 42 if x < 0: print("xは負の整数です。") elif x > 0: print("xは正の整数です。")#xは正の整数です。 else: print("xは0です。")
C言語のif文
#include <stdio.h> int main(){ int x = 42; if(x<0)printf("xは負の整数です。"); else if(x>0)printf("xは正の整数です。\n"); //xは正の整数です。 else printf("xは0です。\n"); return 0; }
javaのif文
public class test{ public static void main(Strings[] agrs){ int x=42; if(x<0) System.out.println("xは負の整数です。"); else if (x>0) System.out.println("xは正の整数です。"); else System.out.println("xは0です"); } }
様々なものを比較する
数値を比較する
if 1 == 1:
print("この条件はTrue")
#以下のように出力される
この条件はTrue
文字列を比較する
if "あああ" == "あああ" : print("この条件は、True") else : print("この条件は、False") #以下のように出力される この条件は、True
文字列を検索する
if "ABC" in "AABBCCDDABCEE" : print("この条件はTrue") #以下のように出力される この条件はTrue
リストを比較する
if [1,2,3,4] == [1,2,3,4] : print("この条件はTrue") #以下のように出力される この条件はTrue
一つ一つの要素が完全に一致する時に条件が成り立ちます
リストの要素を検索する
if "A" in ["A","B","C","D"] : print("リスト内にAの要素がある") #以下のように出力される リスト内にAの要素がある
文字列を検索する
if "tomostudyblog" in "勉強をするならtomostudyblogをみよう!!": print("あった") else: print("ない") #以下のように出力される あった
for文

words = ['dwango', 'kabukiza', 'higashiginza'] for w in words: print(f"w = {w}, len(w) = {len(w)}") # 単語と単語の長さを表示する # w = dwango, len(w) = 6 # w = kabukiza, len(w) = 8 # w = higashiginza, len(w) = 12
良く使われるテクニックと関数
range() 関数
簡単に数列を作ることができる
range(n) は 0 から n 未満
までの整数を生成します。
for v in range(5): print("v =", v) # v = 0 # v = 1 # v = 2 # v = 3 # v = 4 for v in range(5, 10): print("v =", v) #v = 5 #v = 6 #v = 7 #v = 8 #v = 9 for v in range(0, 10, 3): print("v =", v) #v = 0 #v = 3 #v = 6 #v = 9 for v in range(-10, -100, -30): print("v =", v) #v = -10 #v = -40 #v = -70
・range(a)
1からa未満まで1区切りで出力
・range(a,b)
aからb未満までで1区切りで出力
・range(a,b,c)
aからb未満まででc区切りで出力
enumerate()関数
リスト、タプルに対して、ループのときに要素とカウンター(何回目のループか)を一緒に取り出せます。
lst = list(range(5, 10)) print("lst =", lst) #lst = [5, 6, 7, 8, 9] for i, v in enumerate(lst): print(f"i = {i}, v = {v}") #i = 0, v = 5 #i = 1, v = 6 #i = 2, v = 7 #i = 3, v = 8 #i = 4, v = 9 words = ['dwango', 'kabukiza', 'higashiginza'] for i, w in enumerate(words): print(f"i = {i}, w = {w}") # 添字と単語を表示する #i = 0, w = dwango #i = 1, w = kabukiza #i = 2, w = higashiginza
zip()関数
2つ以上のシーケンスを一緒にループにする
lst1 = list(range(1, 5)) lst2 = list(range(5, 9)) print('lst1:', lst1) print('lst2:', lst2) #lst1: [1, 2, 3, 4] #lst2: [5, 6, 7, 8] for a, b in zip(lst1, lst2): print(f"a = {a}, b={b}", a, b) #a = 1, b=5 1 5 #a = 2, b=6 2 6 #a = 3, b=7 3 7 #a = 4, b=8 4 8
sorted() 関数
シーケンスを整列(ソート)された順序でループさせる
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} print(basket) #{'apple', 'orange', 'pear', 'banana'} for v in sorted(basket): print("v = ", v) #v = apple #v = banana #v = orange #v = pear
reversed() 関数
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)
#{'apple', 'orange', 'pear', 'banana'}
for v in sorted(basket):
print("v = ", v)
#v = apple
#v = banana
#v = orange
#v = pear
for文とelse文を組み合わせる
num = 11 for tmp in range(2,num): if num % tmp == 0: print(素数ではありません) break else: print(素数です) #break文を一度も通らないでループが終了する場合
(reverse()関数とreversed())
・list.sort() メソッドはリストの中身を並び替えます。この時そのリスト自体を並び替えた状態にします。
・sorted() 関数は並び替えた新しいリストを作成します。元のリストは影響を受けません。
lst1 = [1, 3, 2]
lst1.sort()
print("lst1 =", lst1) #lst1 = [1, 2, 3]
lst2 = [1, 3, 2]
lst2_sorted = sorted(lst2)
print("lst2_sorted =", lst2_sorted) #lst2_sorted = [1, 2, 3]
print("lst2 =", lst2) #lst2 = [1, 3, 2]
※このようにメソッド(関数)を呼び出したことにより状態が変わる(この場合 lst1 が並び替えられた)ようなメソッド(関数)を副作用のあるメソッド(関数)、破壊的メソッド(関数)という呼びかたをします。
while文
while文はfor文と同様に繰り返し処理のときに使われますが、for文と違い、繰り返しの条件を与えます。
x = 0
while x < 5:
print("x =", x)
x += 1 # x = x + 1 と同じ
# x = 0
# x = 1
# x = 2
# x = 3
# x = 4
break文
ループを中断する
for v in range(10):
print("v =", v)
if v % 3 == 2:
# vを3で割った余りが2のとき、ループを中断する
break
# v = 0
# v = 1
# v = 2
continue文
あるループの回の途中の処理を飛ばし、次の回のループの処理を実行する
for x in range(5):
for y in range(5):
if x == y:
continue
print(f"x={x} y={y}")
# x=0 y=1
# x=0 y=2
# x=0 y=3
# x=0 y=4
# x=1 y=0
# x=1 y=2
# x=1 y=3
# x=1 y=4
# x=2 y=0
# x=2 y=1
# x=2 y=3
# x=2 y=4
# x=3 y=0
# x=3 y=1
# x=3 y=2
# x=3 y=4
# x=4 y=0
# x=4 y=1
# x=4 y=2
# x=4 y=3