Python問題集を解いてみよう!!

【Python】for文でやりがちなミス

当ページのリンクには広告が含まれています。
for文でやりがちなミス

今回は、LINEオープンチャットや teratail に投稿される質問の中で、for文に関するよくあるミスをご紹介します。

for文の基本的な書き方については下記記事を参照ください。

おすすめのレンタルサーバー
目次

最後の値しか出力されません!(泣)

こんな感じ。

number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in number_list:
    even_list = []
    if i % 2 == 0:
        even_list.append(i)

print(even_list)

上記の実行結果

[10]

やりたいことは、number_listの中の偶数だけをeven_listに入れる。

つまり、期待した結果は、[2, 4, 6, 8, 10]ですが、最後の[10]だけしか表示されない。

Aさん

え!?そんなのすぐ気付くでしょ〜

そう思いますか?

でも、このミス、月1ぐらいは遭遇します。

上で挙げたような単純で短いコードならすぐ気付けるかもしれませんが、このfor文以外に気を取られていると意外と気付かないようです。

このミスの原因は、for文の中の最初の処理でeven_listに空のリストを格納しているからですね。

そのため、次のようにfor文の前にeven_listを作成することで、解決します。

number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_list = []

for i in number_list:
    if i % 2 == 0:
        even_list.append(i)

print(even_list)

上記の実行結果

[2, 4, 6, 8, 10]

単純なミスですが、単純だからこそ気付かない、ということもあるのかもしれません。

変数の値が変わりません!(泣)

こんな感じ。

for i in range(1, 4):
    url = 'https://www.tera.tail/page=i'
    print(url)

上記の実行結果

https://www.tera.tail/page=i
https://www.tera.tail/page=i
https://www.tera.tail/page=i

文字列の中に変数名を入れても、文字列として扱われてしまいます。

こういう場合は、str型に変換して、結合するのが最も簡単でしょう。

for i in range(1, 4):
    url = 'https://www.tera.tail/page=' + str(i)
    print(url)

上記の実行結果

https://www.tera.tail/page=1
https://www.tera.tail/page=2
https://www.tera.tail/page=3

もう1つ、下記のような書き方もできます。これは、Python 3.6 以降で使用できる書き方です。

for i in range(1, 4):
    url = f'https://www.testtera.tail/page={i}'
    print(url)

上記の実行結果

https://www.tera.tail/page=1
https://www.tera.tail/page=2
https://www.tera.tail/page=3

Python 3.6 より古いバージョンの場合は、format()メソッドを使います。(Python 3.6 以降でも使用可)

for i in range(1, 4):
    url = 'https://www.testtera.tail/page={}'.format(i)
    print(url)

上記の実行結果

https://www.tera.tail/page=1
https://www.tera.tail/page=2
https://www.tera.tail/page=3

Colab

掲載しているコードは Google Colaboratory で確認できます。

環境構築の不要な Google が提供している Webサービスなので、Python を学習中の方にはオススメです。

おわりに

今回のような単純だけど「やりがちなミス」は意外とあると思うので、こんなのもあるよ〜というのがあれば教えてください。

以上です。

スポンサーリンク

for文でやりがちなミス

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次