プログラミングの3大要素「繰り返し」「条件分岐」「変数の更新」 for、while、els、elif文の使い方

forの使い方

#Pythonで、iが3からスタートしません?
i = 3
for i in range(6):
print( i ,"ワン。")

結論から言うと、残念ながらそのコードではiは0からスタートしてしまいます。

直感的には「最初に i = 3 と決めたんだから、そこから始まってほしい」と感じるかもしれませんが、Pythonの for 文には以下のような仕組みがあるからです。


なぜ 3 から始まらないのか?

Pythonの for i in range(6): という命令は、**「range(6) が出す数字を、順番に i という箱に入れ直す」**という動きをします。

  1. まず、i = 3i に3が入ります。

  2. しかし、次の for i in range(6): が動いた瞬間に、range(6) の最初の値である 0i に上書きされてしまいます。

  3. その結果、最初に書いた i = 3 は無視され、0, 1, 2… と進んでいくことになります。

rangeの使い方

3 からスタートさせる方法

もし「3から始めて5(6のひとつ前)まで表示したい」という場合は、range() の中身を少し書き換えるだけでOKです。

# range(スタートする数, 終わる数のひとつ前)
for i in range(3, 6):
    print(i, "ワン。")

実行結果
3 ワン。
4 ワン。
5 ワン。

このように、range(開始, 終了) と書くことで、好きな数字からカウントを始められます。

range関数の使い分け表

書き方 意味 出てくる数字
range(6) 0から始まって6個分 0, 1, 2, 3, 4, 5
range(3, 6) 3から始まって6のひとつ前まで 3, 4, 5
range(1, 10, 2) 1から始まって2飛ばしで10の手前まで 1, 3, 5, 7, 9

rangeで0〜9までの数から「偶数だけ」を表示

for i in range(10):
    if i % 2 == 0:
        print(i)

実行結果"c:/Users/DELL/python&excel/Chapter1/Section001/sample.py"
0
2
4
6
8

① for i in range(10):
range(10) は
👉 0,1,2,3,4,5,6,7,8,9 を順番に作る
i には、その数が1つずつ入る
つまり:i = 0 → 1 → 2 → 3 → … → 9

② if i % 2 == 0:
% は 余り(あまり)を求める演算子
i % 2 は「i を 2 で割った余り」
👉 余りが 0 なら偶数なので、i % 2 == 0 は「i は偶数ですか?」という意味。

偶数のときだけ以下のprintを実行( i を表示)
奇数なら何もしない

③ print(i)
ifのインデントの中なので、上の if 条件を 満たしたときだけ 実行される

学習ポイント(重要)
・for → 繰り返し
・% → 余り(偶数・奇数判定の定番)
・if → 条件分岐
・Pythonでは インデントが処理の範囲を決める

このプログラム3行は、Pythonの基本文法が凝縮された超重要サンプルです。

whileの使い方

これなら、iが3からスタートしますか?

i = 3
while i <= 6:
print( i+1,”ワン。”)
i += 1

今度は、最初に決めた i = 3 がちゃんと意味を持っています!

前回の for 文とは違い、while 文は勝手に i の中身を書き換えたりしないからです。

ただし、実行結果を見ると少し予想と違うかもしれません。このコードを動かすと、「4 ワン。」からスタートします。


なぜ「4」から始まるのか?

プログラムの動きを順番に追いかけてみましょう。

    1. i = 3: まず、i に 3 が入ります。

    2. while i <= 6:: 「i が 6 以下の間はずっと繰り返して」という指示です。今は 3 なので合格です。

    3. print(i + 1, "ワン。"): ここがポイントです! i は 3 ですが、**それに 1 を足した数(3+1=4)**を表示しています。

    4. i += 1: i を 4 に増やして、また 2 番のチェックに戻ります。

実行結果のイメージ

このコードを実行すると、以下のようになります:

4 ワン。(iが3のとき)
5 ワン。(iが4のとき)
6 ワン。(iが5のとき)
7 ワン。(iが6のとき)


もし「3 ワン。」から始めたいなら?

もし「3」から表示させたい場合は、print の中身を i そのままにすればOKです。

i = 3
while i <= 6:
print(i, "ワン。") # +1 をしない
i += 1

forwhile の違い(まとめ)

今回の違いを整理するとこうなります。

種類 i = 3 の扱い 特徴
for i in range(6) 無視される range が決めたルールで i が上書きされる。
while i <= 6 有効! 自分で i を管理するので、最初の値がそのまま使われる。

💡 ヒント

Pythonでは、回数が決まっているときは for 文を使い、今回のように「特定の数字から始めたい」ときは range(3, 7) と書くのが最も一般的でミスが少ない書き方です。

この i += 1(インクリメント)を書き忘れるとどうなるか、やってみますか?(実はちょっと大変なことになります…!)

さきほど少し触れましたが、while 文で i += 1 を書き忘れると、プログラミングの世界で最も恐れられる現象の一つ**「無限ループ」**が発生します。

elseの使い方

i = 3
while i <= 6:
if i == 5:
print( ” “, i , “ニャー。”)
print( ” “, i , “ワン。”)
i += 1

で結果が

3 ワン。
4 ワン。
5 ニャー。
5 ワン。
6 ワン。

になるのですが、  5 ワン。を消したいのですが?

「5 ワン。」を消したい(5の時だけ「ニャー。」に変えたい)場合は、**else(そうでなければ)**を使うのが一番きれいで確実な方法です!

今のコードだと、if i == 5: の中身を実行したあと、その下の print(..., "ワン。")おまけで必ず実行されるようになっています。


修正したコード:if と else を使う

if と else を組み合わせることで、「5のときはニャー」「それ以外のときはワン」と二者択一の動きにできます。

i = 3
while i <= 6:
if i == 5:
print(" ", i, "ニャー。")
else:
# 5 以外のときだけここを通る
print(" ", i, "ワン。")

i += 1

なぜこれで解決するのか?

  • if i == 5:: もし i が 5 なら、「ニャー」を表示します。

  • else:: そうでない場合(i が 5 ではない場合)だけ、「ワン」を表示します。

これにより、i が 5 のときに「ワン」が表示されるのを防ぐことができます。


もう一つの方法:continue を使う

「5のときだけ特別な処理をして、そのあとの処理(ワンを表示する部分)をスキップして次の周回にジャンプする」という書き方もあります。

i = 3
while i <= 6:
if i == 5:
print(" ", i, "ニャー。")
i += 1 # 飛ばす前に数字を増やしておく
continue # これより下の処理を飛ばして while の先頭に戻る

print(" ", i, "ワン。")
i += 1

この continue を使う方法は、複雑な条件が増えてきたときに「特定の条件だけさっさと終わらせたい」という場面でよく使われます。

elifの使い方

豆知識: もし、5のときだけでなく「3のときはギャー、5のときはニャー、それ以外はワン」のように条件を増やしたい場合はどうすればいいか分かりますか?

よければ、複数の条件を使い分ける elif という書き方もお教えしましょうか?

お願いします

承知いたしました!複数の条件を使い分けるときは elif(エリフ) という言葉を使います。

これは「else if」の略で、「もし最初の条件(if)がダメで、かつ次のこの条件(elif)に当てはまるなら」 という意味になります。


elif を使った複数条件のコード

「3はギャー、5はニャー、それ以外はワン」とするコードはこうなります。

i = 3
while i <= 6:
if i == 3:
print(" ", i, "ギャー。")
elif i == 5:
# i が 3 ではなく、かつ 5 のときだけここを通る
print(" ", i, "ニャー。")
else:
# 3 でも 5 でもないときはここを通る
print(" ", i, "ワン。")

i += 1

実行結果

3 ギャー。
4 ワン。
5 ニャー。
6 ワン。


elif の大事なルール

  1. 上から順番に判定されるプログラムは if → elif → else の順にチェックしていき、最初に当てはまったものだけを実行します。一度どこかに当てまれば、残りの条件は見ずに飛ばされます。
  2. elif は何個でも増やせる「もし7なら…」「もし10なら…」と、条件をいくらでも追加できます。
  3. 最後は else で締める(任意)どの条件にも当てはまらなかった場合の「その他すべて」を else でまとめます。

条件分岐のイメージ表

項目 意味 役割
if もし〜なら 最初の条件チェック(必須)
elif そうじゃなくて、もし〜なら 2番目以降の条件チェック(何個でもOK)
else どれでもなければ 最後の受け皿(省略も可能)

これで、数字ごとに鳴き声を変える自由自在なプログラムが作れるようになりましたね!

ちなみに、Python 3.10からは match という、さらにスッキリ書ける新しい書き方も登場しています。もし興味があれば、そちらの書き方もご紹介しましょうか?

matchの使い方

お願いします

Python 3.10から導入された最新の書き方、matchをご紹介します。

これは「この値が何のとき(case)、どうするか」を整理して書くための機能で、他のプログラミング言語にある「switch文」をさらに強力にしたようなものです。


match 文を使った書き方

先ほどの「3はギャー、5はニャー、その他はワン」を match 文で書くと、見た目がとてもスッキリします。

i = 3
while i <= 6:
match i:
case 3:
print(" ", i, "ギャー。")
case 5:
print(" ", i, "ニャー。")
case _:
# 「_」(アンダースコア)は「その他すべて」という意味
print(" ", i, "ワン。")

i += 1

ここがポイント!

  1. match i:: 「今から i の中身をチェックするよ」と宣言します。

  2. case 3:: もし i が 3 だったら、という意味です。

  3. case _:: ワイルドカードと呼ばれます。上のどのケースにも当てはまらなかった「その他すべて」を受け持ちます。else と同じ役割ですね。


if-elifmatch はどう使い分ける?

どちらを使っても同じ結果になりますが、一般的に以下のように使い分けます。

状況 おすすめの書き方 理由
特定の1つの変数の値で分岐させたい match 「何を確認しているか」が一目で分かりやすく、読みやすい。
「10より大きい」などの範囲や、複数の変数を組み合わせたい if-elif i > 10 のような複雑な条件式は if の方が得意。

注意点:

match 文は Python 3.10 より古いバージョン(2021年以前の環境など)では動きません。最新の環境で学習されているなら、積極的に使ってみてください!


これで、ループ(繰り返す)と条件分岐(分かれ道)の基本をかなりマスターされましたね。

次は、これらを組み合わせて**「特定の数だけ飛ばす(スキップする)」方法や、「途中でループを強制終了する」**方法などに興味はありますか?それとも、何か具体的な作ってみたいプログラムがありますか?

if i == 5:の意味は?

プログラミングにおいて、if i == 5: は「もし i の中身が 5 と等しければ」という意味になります。

一番のポイントは、= が2つ重なっていることです。


「=」と「==」の違い

初心者が一番間違いやすく、かつ一番大切な違いがここにあります。

記号 読み方 意味 使い方(例)
= 代入 右の値を左の箱に入れる i = 5 (iを5にする)
== 比較 左右が同じかどうか確かめる i == 5 (iは5かな?)

1行ずつの解読

if i == 5: を言葉で分解すると、こうなります。

  • if: 「もしも〜なら」

  • i: 「変数 i の中身が」

  • ==: 「〜と等しい(同じ)」

  • 5: 「5」

  • :: 「以下の処理をやってね(合図)」

実際のイメージ

もし i が 5 のとき、この条件は「YES(真/True)」となり、その下にインデント(字下げ)して書かれた命令が実行されます。

もし i が 3 や 6 のときは、「NO(偽/False)」となり、その下の命令は無視して飛ばされます。


他によく使う「比較」の記号

== 以外にも、数字を比べるときにセットで覚えると便利な記号があります。

  • i != 5i は 5 ではない(等しくない)

  • i > 5i は 5 より大きい

  • i < 5i は 5 より小さい

  • i >= 5i は 5 以上(5も含む)

i += 1の意味は?

i += 1 は、ひとことで言うと**「今の i に 1 を足して、i を更新する」**という意味です。

専門用語では「累算代入(るいさんだいにゅう)」や「インクリメント」と呼びますが、イメージとしては**「カウンターの数字をひとつ進める」**操作だと思ってください。


1. 本来の書き方と省略した書き方

実は、i += 1 は以下の書き方を短く省略したものです。

書き方 意味
i = i + 1 元々の丁寧な書き方
i += 1 よく使われる省略した書き方

プログラミングの世界では「1を足す」という操作が非常に多いため、この短い書き方が一般的になっています。


2. 計算のステップ(頭の中の動き)

プログラムが i += 1 を見ると、以下のような手順で処理を行います。

  1. 今の値を確認: 今の i がいくつかな?(例:3)

  2. 計算する: それに 1 を足そう(3 + 1 = 4)

  3. 上書きする: 計算結果の「4」を、新しく i の箱に入れよう


3. もしこれを忘れるとどうなる?(while文の場合)

最初の方で使った while 文において、この i += 1 は命綱のような役割をしています。

i = 3
while i <= 6:
    print(i)
# もしここで i += 1 を書き忘れると...

もし i += 1 がないと、i はずっと「3」のままです。

すると、while i <= 6: という条件が永遠に合格(True)し続けてしまい、プログラムが止まらなくなります。(これを「無限ループ」と呼びます)

4. 応用編:他の数字や計算もできる

この書き方は、1を足すとき以外にも使えます。

  • i += 5i を 5 増やす

  • i -= 1i を 1 減らす(カウントダウン)

  • i *= 2i を 2 倍にする


まとめ:

i += 1 は、**「次へ進むためのステップ」**です。

ここまでで「繰り返し」「条件分岐」「変数の更新」という、プログラミングの3大要素をすべて触ったことになります!

inputでの入力の変数は文字列になる

inputでの入力の変数は文字列になるらしいですが、数字を入力したい場合はどうするのですか?

👉 input() で受け取った値は必ず「文字列(str)」
👉 数字として使いたい場合は「型変換」します

基本形(最重要)

---整数を入力したい場合---
x = int(input("数字を入力してください:"))
print(x + 10)
🔹 int() が 文字列 → 整数 に変換しています。
---小数を入力したい場合---
y = float(input("数字を入力してください:"))
print(y * 2)
🔹 float() が 文字列 → 小数 に変換。
---なぜ変換が必要なの?---
x = input("数字を入力:")
print(x + 10) これはエラーになります👇
TypeError: can only concatenate str (not "int") to str
理由:
input() → "10"(文字列)
"10" + 10 は 足し算できない

逆に文字列に変換したい場合は
x=str(v)
print (x)
よくある失敗例(重要)
x = input("数字:")
x = int(x)
⬆ これはOKですが、
xに数字じゃなくて「abc」のような文字を入力すると
ValueError: invalid literal for int()のエラーになります。
つまり「'abc' を数字(整数)に変換しろ?……いや、数字じゃないよね?」
その結果、ValueError が発生します。

安全な書き方(初心者向け)

while True:
s = input("数字を入力してください:")
if s.isdigit():
x = int(s)
break
else:
print("数字を入力してください")

👉 数字以外が入っても落ちません。

まとめ表
入力したい値 書き方
整数 int(input())
小数 float(input())
文字 input()
安全入力 isdigit() を使う
覚え方(超重要)

input() は「必ず文字」
数字にしたいなら int / float を通す

これは Python 初心者が 必ず通る関門です

文の終わりの:はどの場合に付けるのか?

👉 「これから中に処理が続きますよ」
という合図として :(コロン)を付けます。

: を付ける代表的なケース
① if文(条件分岐)
if x > 0:
print(“正の数”)

意味:
「もし条件が成り立ったら、
次の行から処理が始まる」

② for文(繰り返し)
for i in range(5):
print(i)

意味:
「繰り返しの内容は、
この後に書きます」

③ while文(条件付き繰り返し)
while x < 10:
x += 1

④ 関数定義
def hello():
print(“こんにちは”)

⑤ クラス定義
class MyClass:
pass

⑥ try / except
try:
x = int(input())
except ValueError:
print(“数字を入れてください”)

共通ルール(超重要)
: が付く行の特徴

行の最後に必ず :

次の行から インデント(字下げ)が必要

**処理のかたまり(ブロック)**が始まる

👉 Pythonでは {} を使わない代わりに
「: + インデント」 で範囲を決めます。

: を付けないケース
❌ print文
print(“hello”) # : 不要

❌ 代入
x = 10 # : 不要

❌ 計算
y = x + 5 # : 不要

よくある間違い
❌ コロンを忘れる
if x > 0
print(x)

エラー:
SyntaxError: expected ‘:’

❌ コロンの後に処理を書く(基本NG)
if x > 0: print(x)

👉 動きますが、初心者は使わない方が安全です。
ひと目で分かる判断基準

🔑 「条件・繰り返し・定義 → :」
🔑 「ただの処理 → : なし」

まとめ
場面 :
if / for / while 付ける
def / class 付ける
try / except 付ける
print / 代入 付けない
覚え方(おすすめ)

「: は “ここから中身が始まる” の合図」

これが腑に落ちると、
Pythonのコード構造が一気に読みやすくなります 👍

コメント