python入門4(for文とは)

python入門、for文とは

for文とは

for文とはpythonの制御構造の一つで、処理を繰り返す時に使われる構文です。

制御構造に関しては前回の「if文」を参考にしてください。

当サイト(In-Output)におけるfor文の説明手順

for文はリストやタプル、辞書等と組み合わせて使うことが多いのですが、In-Outputではfor文の基礎→リストやタプル→for文の応用と説明致します。

このページではfor文の基礎しか扱っておりませんので、ご了承ください。

また、range関数だけ少し用いて解説を致します。

また、「In-Output」では「変数」は「h」と扱いますが、for文における(カウンタ)変数は「i」や「j」を用います。これは慣習的に「i」や「j」を用いることが多い為です。

for文の基本的な書き方

for文の基本的な書き方は、

for (カウンタ)変数 in 繰り返す範囲:
  実行する処理

となります。まず簡単なコードを見てみましょう。

for i in "あいうえお":
    print(i)




上記のコードだと、「あ」「い」「う」「え」「お」と文字が一つずつ繰り返し出力されました。

この場合、「繰り返す範囲」が「あいうえお」となっており、変数「i」に「あ」を代入して出力→「i」に「い」を代入して出力と繰り返して出力されています。

一文字づつ代入されていますが、この場合「あいうえお」という範囲の中だと、「あ」「い」「う」「え」「お」が要素とされる為です。

ではコチラのコードを見てみましょう。本来なら、リスト等を用いますが、リストを使わなくてもこのように繰り返しの範囲を記述することもできます。

for i in "あいうえお","かきくけこ":
    print(i)
あいうえお
かきくけこ
繰り返す範囲が「あいうえお」と「かきくけこ」になったで、代入される要素が「あいうえお」とかきくけこになりました。

ブロックの中でfor文

for文もif文と同じようにブロックの中で処理が行われますが、このブロックの中にfor文を書くこともできます。

下のコードを見てみましょう。

for i in "あいうえお","かきくけこ":
    print(i)
    for j in i:
        print(j)

このコードの出力結果を予測してみましょう。

答えを見る
あいうえお





かきくけこ




最初のfor文では「あいうえお」が変数「i」に代入されます。

print(i)によって、「あいうえお」が出力されました。

ブロック内のfor文では変数「i」の中から、要素を取得して出力されますので、変数「i」の「あいうえお」の要素「あ」「い」「う」「え」「お」を出力しています。

変数「j」の出力が終わると、また、初めに戻り、2番目の要素の「かきくけこ」を取得して、出力した後、「か」「き」「く」「け」「こ」を出力しています。

range関数を使ってfor文を繰り返す

range関数とは

range関数は連続した数字を作成する関数で、リストを作成するときや、for文で繰り返したい回数を指定する時によく用いられます。

詳しくは「range関数」の項目で説明しますので、ここではざっとした説明を記載します。

書き方はこのようになっております。

range(start,stop,step)

「start」と「step」は省略することができます。その場合「start」には、「0」、「step」には「1」が代入されたとして、処理されます。

range関数を使って簡単なfor文を書いてみます

for i in range(5):
    print(i)
0
1
2
3
4

数字が一つづつ増えています。これは「step」に指定した数字が1なので、1ずつ増えたわけです。これが2なら「0」「2」「4」と増えていきます。

0から開始されているのは、「start」が省略されて、「0」が代入されているからなのですが、「stop」で表示した5が表示されていません。これは「5」に達すると数字を生成しないからです。「5」を表示させたいなら「6」にする必要があります。

range関数を使って文字を繰り返し表示させる

range関数で連続した数字を生成して、文章を繰り返す方法です。

まずはコードを見てみましょう。

for i in range(3):
    print("りんご")
りんご
りんご
りんご

この場合は、連続した数字が「0」「1」「2」と3つ作られましたので、3回繰り返されています。少しややこしいですが、少しわかりやすいようにコチラのコードを見てみましょう。

for i in range(3):
    print("りんご" + str(i) + "個")
りんご0個
りんご1個
りんご2個

変数「i」を出力する事によって、数字の流れが分かりやすくなりましたね、これを「りんご1個」「りんご2個」「りんご3個」と出力する為にはどのようにコードを書けばいいか予想してみましょう。

答えを見る
for i in range(1,4):
    print("りんご" + str(i) + "個")
りんご1個
りんご2個
りんご3個

これでりんごを順番ずつ出力できました。

for文内のelse

if文で使用したelseをfor文でも使用することができます。

for文でのelseはループ処理が終了した後に発生させる処理を書くことができます。

for i in range(1,4):
    print("りんご" + str(i) + "個売れました。")
else:
    print("りんごはなくなりました。")
りんごが1個売れました。
りんごが2個売れました。
りんごが3個売れました。
りんごがなくなりました。

range関数で指定した回数繰り返した後に「else」の処理が行われました。

しかし、これだけではわざわざ「else」を使わず同じことが書けます。

for i in range(1,4):
    print("りんご" + str(i) + "個売れました。")
print("りんごはなくなりました。")

このコードで出力の結果は同じになります。でわ、どのような場合に「else文」を使うのかというと、詳しくは「for文の応用編」で説明しますが、break文という構文があるのですが、これはループ処理を抜け出す場合等に用いられます。

breakで抜け出した場合はelseは実行されなくなります。コードを見てみましょう。

for i in range(1,4):
    print("りんご" + str(i) + "個売れました。")
    if i >= 3:
        break
else:
    print("りんごはなくなりました。")
りんごが1個売れました。
りんごが2個売れました。
りんごが3個売れました。
breakで抜け出したので、elseは実行されませんでした。
このコードをelseなしで書いた場合breakで抜け出しても、for文の処理ではないので、「りんごはなくなりました。」と出力されてしまいます。

これで、for文の基礎は終了です。

for文の基礎問題

最後にfor文の基礎問題です。今まで同様コードの結果を予測してください。

エラーが発生する場合はエラーを予測してください(インデントの間違いによるエラーはありませんので、インデント数を数える必要はありません)

問1:

for i in "りんご","みかん":
    print("バナナと" + i)
答えを見る
バナナとりんご
バナナとみかん (りんごとみかんが繰り返されています)

問2:

for i in "りんご","みかん","バナナ":
    if i == "みかん":
        print(i)
答えを見る
みかん (for文とif文の組み合わせです。変数「i」がりんごとバナナの時は、何も行われません。「i」がみかんの時だけ変数が出力されました。)

問3:

h = "りんご"
if h == "みかん":
    for i in 1,2,3:
        print("みかん" + str(i)+ "個です")
elif h == "りんご":
    for i in 1,2,3:
        print("りんご" + str(i)+ "個です")
答えを見る
りんご1個です
りんご2個です
りんご3個です (if文とfor文の組み合わせです。変数「h」がりんごの時にりんごの個数を繰り返しています。)

問4:

h = 0
for i in range(5,10,2):
    h = h + i
    print(h)
答えを見る
5
12
21 
(range関数で生成される数字は「5」「7」「9」です。変数「h」に5を足して出力、「5」となった変数「h」に「7」を足して出力、最後に「9」を足して出力と繰り返しています。)

問5:

i = 0
for i <= 5:
    print(i)
    i = i + 1
答えを見る
エラー (この書き方はもう一つの繰り返し分「while文」の書き方です。forをwhileに変更すると0~5までが出力されます。)

 data-src=

プログラミング情報サイト「In-Output」

当サイトではプログラミング言語の情報を発信しています。
HTMLやCSSのマークアップ言語の学習方法や解説、WordPressでのサイト開設方法、python等のプログラミング言語を使用して日頃の作業の効率化等、皆様のお役に立てるサイトを目指しています。

CTR IMG