LoginSignup
10
11

More than 5 years have passed since last update.

[python]for 文の使い方をすべて知らなかった

Last updated at Posted at 2015-11-06

for文

for文でよくif文(例外処理等)+breakを入れる。
その時、breakしたのか正常終了(すべての要素を回り切る)したのか知りたい。
breakで終了した時は、そのif文に処理を書ける。
逆に、すべての要素を回った時の処理の書き方は?

参考URL:http://docs.python.jp/3.4/reference/compound_stmts.html

最初のスイート内で break 文が実行されると、 else 節のスイートを実行することなくループを終了します。 continue 文が最初のスイート内で実行されると、スイート内にある残りの文の実行をスキップして、次の要素の処理に移るか、これ以上次の要素が無い場合は else 節の処理に移ります。

ここでのスイートは、for文内での処理のこと(多分)
基礎を学んだ時にちゃんと全部見ないとこういうのを見落とす。
for文が終わった時にelseを使えば、正常終了した時に実行される。
使い方は、if-elseと一緒。

サンプル

下記のコードは、num_listに文字列が含まれているかいなかを出力するコード(なんの役にも立たない)
テスト用に最初に渡したリストには文字列を含ませています。

check_num.py
import random

def num_check(num_list):
    print(repr(num_list))
    for i in num_list:
        if type(i) == str:
            print('文字が含まれています')
            break
    else: print('文字を含んでいません。')

if __name__ == '__main__':
    num_check([random.randint(-1, 100) if i != 5 else str(i)  for i in range(10)])
    num_check([random.randint(-1, 100) for _ in range(10)])

出力

output.
$ python check_num.py 
[78, 3, 2, 82, 52, '5', 20, 41, 66, 98]
文字が含まれています。
[96, 10, 92, 72, 95, 9, 64, 60, 92, 77]
文字を含んでいません。

まとめ

elseを使えば、正常終了した時の処理ができる。
ちなみに、while文でも、最初の条件文でループを抜けた時の処理を同様にelseを使って表せます。

10
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11