CodeGym /コース /Python SELF JA /ループとifについてもう少し

ループとifについてもう少し

Python SELF JA
レベル 4 , レッスン 5
使用可能

11.1 三項演算子

Pythonにはいわゆる三項演算子があって、基本的には改良された演算子 if elseのようなものなんだ。

例えばこういったコードがあるとして:


if a < b:
   min = a
else:
   min = b

こんな簡単なコードも、もっとコンパクトに書けるんだ。こんな感じでね:


min = a if a < b else b

三項演算子の一般的な形はこんな感じかな:


変数 = 値1 if 条件 else 値2

条件が真なら変数に 値1が代入されて、偽なら 値2が代入されるんだ。

条件の後にコロンをつけないことに注意してね。

11.2 ループ内のelse

Pythonでは、elseはよく条件文のifと一緒に使われるけど、 実はそれだけじゃなくて、forwhileループでも使えるんだ。

ループ内のelseは最初はちょっと変に思えるかもしれないけど、 実はプログラムの流れをうまく管理するのに役立つんだ。

ループでのelseの動作

elseは、ループが通常通りに終了したとき(つまり、breakで中断されなかった場合)に実行されるんだ。これは、ループが途中で中断されたかどうかを確認するのに役立つよ。

基本的なループの forの実例:


for i in range(3):
    password = input('パスワードを入力してください: ')
    if password == '秘密':
        print('パスワードが受け付けられました。')
        break
else:
    print('試行回数がないか、すべてのパスワードが間違っています。')               

ここでは、ユーザーが3回間違ったパスワードを入力したときにelseが実行されるんだ。もしユーザーが正しいパスワードを入力したら、ループはbreakで中断されて、elseブロックは実行されないんだ。

基本的なループの whileの実例:


n = 5
while n > 0:
    print(n)
    n -= 1
else:
    print('ループは正常に終了しました。')               

この場合、条件が偽になったため、ループが自然に終了した後にelseが実行されるよ。

実用的な意味

ループ内でelseを使うのは、特に検索アルゴリズムで有用だよ。たとえば、リストの中にない要素を探すとき、ループが終わった後に失敗メッセージを出力するためにelseを使えるんだ。

elseをループで使うときは、読んでいる人が混乱しないように、明確で一貫性のある方法で使ってね。elseがいつも直感的に理解できるわけじゃないから、コメントを追加したり、他の方法で論理を実装したりして、コードをわかりやすくすることも考えてね。

11.3 ネストされたループ

Pythonでは、非常に複雑なロジックをすごくコンパクトに書くことができるんだ。ある場合には、ネストされたifが必要で、またある場合にはネストされたループが必要なんだ。これから、そこのところをちょっと話してみるね。

ネストされたループというのは、あるループの中に別のループがあることを意味するんだ。これを使うと、多次元配列やリストのリスト、その他の入れ子になったデータ構造を処理できるんだよ。

ネストされたループは、外側のループと1つまたは複数の内側のループから成り立っているんだ。外側のループが1回繰り返されるたびに、内側のループは全部実行されるの:


for i in range(3):  # 外側のループ
    for j in range(3):  # 内側のループ
        print(f"({i}, {j})")               

外側のループの観点では、内側のループとその内容は、外側のループの各反復ごとに実行されるコマンドブロックに過ぎないんだ。外側のループは、自分の内側に何がいくつ存在しようと、まったくかまわないんだ。自分のリストの変数のたびに内部のコマンドブロックを実行するだけなんだ。

じゃあ、掛け算の表を画面に出してみようか。ネストされたループはこのタスクにぴったりだね。掛け算の表を作るには、1つのループが掛ける数を、もう1つが掛けられる数を管理するようなネストされたループを使うんだ:


n = 5
for i in range(1, n + 1):
    for j in range(1, n + 1):
        print(f"{i} * {j} = {i * j}", end='\t')
    print()  # 次の掛ける数へ移行するために新しい行に移動               

この例では、画面に掛け算の表が出力されるよ:


1 * 1 = 1	1 * 2 = 2	1 * 3 = 3	1 * 4 = 4	1 * 5 = 5	
2 * 1 = 2	2 * 2 = 4	2 * 3 = 6	2 * 4 = 8	2 * 5 = 10	
3 * 1 = 3	3 * 2 = 6	3 * 3 = 9	3 * 4 = 12	3 * 5 = 15	
4 * 1 = 4	4 * 2 = 8	4 * 3 = 12	4 * 4 = 16	4 * 5 = 20	
5 * 1 = 5	5 * 2 = 10	5 * 3 = 15	5 * 4 = 20	5 * 5 = 25

ネストされたループをよく理解するためには、ひたすら実践するのが一番だよ。プログラミングで何かを習得する最速の方法は、やっぱりやってみることなんだ。

1
アンケート/クイズ
ループと分岐、レベル 4、レッスン 5
使用不可
ループと分岐
ループと分岐
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION