はじめに:プログラミングは「楽」をするためのもの!
こんにちは、くぴです!『39歳からのPython学習ノート』へようこそ!
前回、プログラムに「もしも~なら~する」という判断をさせるif
文を学びました。今回は、プログラミングのもう一つの超重要要素、「繰り返し処理」に挑戦です!Pythonでは主にfor
文(フォーぶん)を使うそうです。
同じような処理を何度も繰り返すのって、人間がやると面倒だし、ミスも起こりやすいですよね。プログラミングは、そういう面倒なことをコンピューターに任せて「楽」をするための技術でもあるんだな、と今回すごく感じました!
リストの中身を全部チェックしたり、決まった回数だけ何かを実行したり…。for
文の使い方と、僕が実際に試してみて「おお!」と思ったこと、そしてやっぱり「あれ?」となったポイントを、今回は少し詳しくまとめてみます!
リストの中身を一つずつ取り出す!:基本のfor文
fruits = ["apple", "banana", "cherry"]
みたいなリストがある時、中身を全部表示するのに print(fruits[0])
, print(fruits[1])
… って書くのは大変!そこで for
文です。
基本的な形(公式みたいに言うと)はこうです↓
Python
for 一時的な変数名 in リストなどの集まり:
繰り返したい処理(※インデントを忘れずに!)
for
の後に、取り出した要素を一時的に入れておくための変数名を書きます(名前は自由!item
とかfruit
とか分かりやすいものが◎)。- 次に
in
と書き、その後に要素を取り出したいリストなどの変数名を書きます。 - 最後にコロン
:
をつけます。 - 次の行から、リストの要素一つ一つに対して繰り返したい処理を、**インデント(字下げ)**して書きます。
例:果物リストの中身を順番に表示する
Python
fruits = ["apple", "banana", "cherry"]
print("好きな果物リスト:")
# fruitsリストから要素を一つずつ取り出して、変数 fruit に入れて繰り返す
for fruit in fruits:
# ↓このインデントされた部分が繰り返される
print(fruit)
print("--- リスト終わり ---") # ループが終わった後に実行される
これを実行すると、ターミナルにはこう表示されます↓
好きな果物リスト:
apple
banana
cherry
--- リスト終わり ---
リストの要素が一つずつ fruit
という変数に順番に入り、print(fruit)
が3回繰り返された、というわけですね!これは便利!
決まった回数だけ繰り返したい!: range() との合わせ技
「リストの中身全部」ではなく、「単純に5回繰り返したい」という時は、range()
(レンジ) という関数と組み合わせると便利です。
range(5)
→ 0, 1, 2, 3, 4 という5つの数字を作ってくれます。range(1, 6)
→ 1, 2, 3, 4, 5 という数字を作ってくれます(6の手前まで!)。
これをfor
文と組み合わせます。
例:1から5までの数字を合計する
Python
total = 0 # 合計を入れる変数を最初に0で用意
for num in range(1, 6): # 変数 num に 1, 2, 3, 4, 5 が順番に入る
total = total + num # totalにnumを足していく
# ↓ここで使ってるのが f-string! 便利!
print(f"{num}まで足した合計: {total}")
print(f"最終的な合計: {total}") # 結果: 最終的な合計: 15
【ここで脱線?】超便利な f-string について ところで、さっきの print
で f"..."
っていう書き方が出てきましたよね? これは『f文字列(f-string)』と言って、文字列の中に {変数名}
を書くと、その部分が自動的に変数の値に置き換わって表示される、超便利な書き方なんです! 以前やったみたいに print("合計:" + str(total))
って書くより、ずっと簡単で見やすいと思いませんか? ポイントは文字列の最初の引用符("
か'
)の『直前』に f
を付けること! これだけです! これから僕も積極的に使っていこうと思います。
僕が間違えて書いたコードも載せておきますね。
どこを間違えてるか探してみてくださいね。
繰り返しの中で条件分岐!: for文 と if文 のコンボ
これができるようになると、一気にプログラムっぽくなりますね! for
で繰り返しながら、if
で条件に合うものだけを選んで処理する、という合わせ技です。
【大事なイメージ】
for文とif文が組み合わさった時の動きここで大事なイメージ! for 変数 in リスト:
って書くと、ループが1周するごとに、まずリストから要素が1個『取り出されて』、それが『変数』にポンッと入るんです。その『変数』に入ったものを使って、インデントされた部分の処理が行われます。 だから、例えばループの中で if
文を使う時、if
がチェックする時点では、もうその周回の要素は変数の中に入って準備OK!な状態なんですね。「if文の段階では、もう値は取り出されてる」という僕のイメージ、これでスッキリしました!
【練習問題①:偶数だけ数えてみた!】 data = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
から偶数だけ表示して、その数を数える、というのをやりました。
Python
data = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
even_count = 0 # カウンター用変数を0で準備
print("リストの中の偶数:")
for number in data:
# ↓ここで「余り」を求める % が登場!
if number % 2 == 0: # 2で割った余りが0なら偶数
print(number)
even_count = even_count + 1 # ← 偶数が見つかったら+1!
print(f"偶数の合計個数: {even_count}") # 結果:3
【ここで脱線?】「余り」を求める演算子 %
ここで出てきた『%』(パーセント記号)ですが、これはプログラミングでは『割り算の余り』を求めるための演算子なんです。「A % B」と書くと、「AをBで割った時の余り」を計算してくれます。例えば 10 % 3
は、10割る3は3余り1なので、結果は 1
になります。偶数かどうかを知りたいときは、「2で割った余りが0かどうか」を見れば良いので、number % 2 == 0
という条件式が使えるんですね!これも便利!
【僕のつまづきポイント】カウンターが増える仕組み 僕が最初「あれ?」ってなった、even_count
が増える仕組みも復習です。even_count = even_count + 1
は、『イコールの右側を先に計算する』のがポイントでしたね! ①まず『現在の even_count
の値 + 1』を計算して、②その『計算結果』を改めて変数 even_count
に上書き保存する。この処理が、偶数が見つかるたびに行われるから、ちゃんと個数が数えられる、というわけでした。数学のイコールとは違う、『代入(値を入れ直す)』という考え方、少しずつ慣れてきました!
【練習問題②:FizzBuzzやってみた!】 1から30まで数えながら、3の倍数で”Fizz”、5で”Buzz”、15で”FizzBuzz”って表示する有名なやつです。if
, elif
, else
の順番と、and
の使い方がポイントでした!

この問題は意外と頭にすぐ流れてきたんですが、問題は15の倍数ですよね。
15の倍数とは書きましたが指示では、3でも5でも割り切れる。それをFizzBuzzと・・・
それを、この「and」が解決してくれました!
「〇〇で、かつ、△△でもある」という条件は `and` を使って繋げられます。
例: num % 3 == 0 and num % 5 == 0)
これで、すっきりコードを書くことができました!
【練習問題③:長い単語だけ探してみた!】 words = ["python", "is", "fun", "programming", "list", "variable", "challenge"]
から5文字以上の単語を探す練習。len()
の使い方でやらかしました(笑)
Python
words = ["python", "is", "fun", "programming", "list", "variable", "challenge"]
print("5文字以上の単語:")
for word in words:
# if len(words) >= 5: ← リスト全体の長さを見ちゃダメ!
if len(word) >= 5: # ← こっち!「今見てる単語」の長さ!
print(word)
ループの中では、ちゃんとループ変数(ここではword
)を使う、という基本、しっかり覚えました!
ちなみに、この問題のつまづきポイントが先ほど書いた、
【大事なイメージ】for文とif文が組み合わさった時の動き、につながるんです。
まとめ:繰り返し処理、マスターへの道は続く!
今回は for
文を使った繰り返し処理を、少し詳しく見てみました。リストの中身を順番に処理したり、range()
で決まった回数繰り返したり、その中でif
文で条件分岐させたり…前回学んだif文と合わせると、一気にできることが増えた気がします!
まだまだ基本的なことだけですが、この「繰り返し」と「条件分岐」を使いこなせれば、色々なプログラムが作れそうな予感がしますね!
今回もエラーや勘違いはありましたが(笑)、それもまた一歩前進の証! これからも、楽しみながらPythonの世界を探検していきたいと思います!
ここまで読んでくださり、ありがとうございました!