Python | 1 日 60 分 × 7 日アプリ学習:超初級編

Python
スポンサーリンク

6日目のゴールと今日やること

6日目のテーマは
「条件によってメッセージを変える “if” の入口に触れること」 です。

これまでで、

  • print で画面を作る
  • 数字と計算
  • 変数(名前をつけて値を持たせる)

までは来ました。

今日はそこに、ほんの少しだけ「考える力」を足します。

  • もし〇日目なら、こう言う
  • もし最終日なら、特別メッセージを出す

のように、
「状況に応じて出力を変える」 ことをやってみます。

新しく出てくるキーワードは if です。
でも、今日扱うのは本当に入口だけ。
「読みやすさ」と「感覚」を大事にして進めます。


「条件で分ける」とは何かを、まず日本語で考える

ふだんの会話にもある「もし〜なら」

プログラムの if は、
日本語でいう「もし〜なら」にあたります。

例えば、ふだんこんな会話、していますよね。

「もし雨が降ったら、傘を持っていく」
「もし時間が余ったら、復習をする」

この「もし〜なら」の部分を、
Python にも教えてあげるのが if です。

今日やりたいのは、
学習日数に応じて、メッセージを変えること。

例えば、

  • まだ途中の日 → 「この調子で続けよう」
  • 最終日 → 「完走おめでとう!」

みたいな違いをつけたい。

それを、if を使ってやってみます。


いちばん小さい if の形を見てみる

「もし day が 7 なら」の基本形

まずは、形をシンプルに見るところから始めます。

day = 7

if day == 7:
    print("今日は最終日です!")
Python

ここでは、

day = 7
→ day という変数に 7 を入れる(これは今までどおり)

if day == 7:
→ 「もし day が 7 と“等しいなら”」

という意味になります。

ポイントがいくつかあります。

1つ目。
== は「等しいかどうか」を比べる記号です。
= は「代入(入れる)」、== は「比較(同じか調べる)」です。

2つ目。
行の最後に :(コロン)がついていること。
if の条件文の最後には必ずコロンを書きます。

3つ目。
print("今日は最終日です!") の前に、
スペース(インデント)がついていること。
Python では、「if の中でやること」を、
前にスペース(普通は4つ)を入れて書きます。

日本語で言うと、

「day が 7 なら、
  『今日は最終日です!』と表示する」

という意味です。


if のインデント(字下げ)は「この中身が if の結果だよ」という印

インデントがないとどうなるか

さっきのコードを、わざとインデントなしで書くとどうなるか。

day = 7

if day == 7:
print("今日は最終日です!")
Python

これは、Python 的には「間違い」です。

if day == 7: の次の行は、
「if が真(条件を満たした)ときに実行する部分」なので、
必ずインデントして書かないといけません。

インデントは、「この行は if にぶら下がっているよ」という印です。

インデント付きで読むイメージ

もう一度、正しい形を見てみます。

day = 7

if day == 7:
    print("今日は最終日です!")
Python

これを日本語にすると、

day に 7 を入れる
もし day が 7 なら、
この行(print)の命令を実行する

という“段落構造”になります。

「インデントされた行は、その上の if とセット」

この感覚を、ゆっくりでいいので掴んでください。


学習レポートアプリに「最終日メッセージ」を足す

まずは 5日目のコードを少し思い出す

5日目で、こんな設定をしていました。

name = "あなたの名前"
course_name = "Python 超初級編"
day = 6          # ← ここを変えれば何日目かが変わる
minutes_per_day = 60
total_days = 7
Python

この daytotal_days を使えば、

「もし day が total_days と同じなら、最終日」

と判断できます。

if を足して「最終日だけ特別メッセージ」

さっそく条件を入れてみます。

name = "あなたの名前"
course_name = "Python 超初級編"
day = 6
minutes_per_day = 60
total_days = 7

total_minutes = minutes_per_day * total_days
total_hours = total_minutes / 60

print("===== 学習レポート =====")
print()
print("名前:")
print(name)
print()
print("コース名:")
print(course_name)
print()
print("今日は")
print(day)
print("日目です")
print()

# ここから条件によるメッセージ
if day == total_days:
    print("おめでとうございます! これが最終日です!")
print("ここまで続けてきた自分をほめてあげましょう。")
Python

ここでの流れを整理すると、

  1. day と total_days を変数として持っておく
  2. if day == total_days: で「もし最終日なら」を表現
  3. その中でだけ、特別なメッセージを print する

ということをしています。

day = 6 のままで実行すると、

「最終日メッセージ」は出ません。

day = 7 に変えて実行すると、

if の条件を満たすので、
特別メッセージが出てきます。

同じプログラムなのに、“条件によって表示が変わる”
ここが、今日一番味わってほしいポイントです。


「途中の日」と「最終日」でメッセージを切り替える

if と else をセットで使う

「最終日だけ特別」ではなく、

「途中の日」と「最終日」でメッセージを切り替えたいこともありますよね。

そのときに使えるのが else です。

基本形を見てみましょう。

day = 6
total_days = 7

if day == total_days:
    print("おめでとうございます! 最終日です!")
else:
    print("まだコースの途中です。この調子で続けましょう。")
Python

これの動きはこうです。

  1. もし day == total_days が真(True)なら
    → 上の print("おめでとうございます! …") が実行される
  2. そうでなければ
    else: 以下の print が実行される

「if の条件がダメだったら、代わりにこっちをやる」が else です。

学習レポートアプリに当てはめてみる

さっきのレポートに else を足してみましょう。

name = "あなたの名前"
course_name = "Python 超初級編"
day = 6
minutes_per_day = 60
total_days = 7

total_minutes = minutes_per_day * total_days
total_hours = total_minutes / 60

print("===== 学習レポート =====")
print()
print("名前:")
print(name)
print()
print("コース名:")
print(course_name)
print()
print("今日は")
print(day)
print("日目です")
print()

if day == total_days:
    print("おめでとうございます! これが最終日です!")
    print("7 日間、よくここまで続けました。")
else:
    print("まだコースの途中です。")
    print("少しずつ、一歩ずつ進んでいきましょう。")

print()
print("合計学習時間(時間):")
print(total_hours)
Python

ここでも、

day の値を 6 にするか 7 にするかで、
出てくるメッセージが変わります。

同じコードなのに、“設定によって” 出力が変わる。

これが「アプリっぽく」なってくる感覚です。


進捗に応じてメッセージを少しだけ細かくする

「前半」「後半」「最終日」に分けてみる

慣れてきたら、
もう一歩だけ踏み込んでみましょう。

例えば、こう分けてみるイメージです。

  • まだ半分より前
  • 半分は超えたけど、まだ最終日前
  • 最終日

これを if / elif / else で表現できます。

day = 6
total_days = 7

if day == total_days:
    print("おめでとうございます! 最終日です!")
elif day > total_days / 2:
    print("コースの後半に入っています。この調子でゴールまで!")
else:
    print("まだ前半です。焦らず、基礎を固めていきましょう。")
Python

ここで新しく出てきたのが elif です。
意味は「else if」(もし〜でなければ、今度は〜か?)のようなもの。

流れはこうです。

  1. まず if day == total_days をチェック
  2. それがダメなら elif day > total_days / 2 をチェック
  3. どちらでもなければ else に落ちる

つまり、

最優先:最終日かどうか
次:後半に入っているかどうか
それ以外:まだ前半

という順番で判断しています。

ここまでやるのは、6日目の「発展」部分です。
読んでみて、「なんとなく分かる」くらいなら十分です。


6日目で特に深く理解してほしいこと

1つ目。
if 条件: と書くとき、
インデントされた行が「条件を満たしたときだけ実行される」
という構造になっていること。

2つ目。
== は「等しいかどうかを比べる」ための記号であり、
= は「値を入れる」ための記号だということ。
ここを取り違えると、一気に意味が変わります。

3つ目。
同じプログラムでも、
daytotal_days の値を変えることで、
出力を変えられるようになっていること。
「条件によってメッセージが変わる」というのが、アプリらしさにつながります。


6日目のまとめと、7日目へのつなぎ

6日目であなたは、

  • if を使って、「もし〜ならこのメッセージ」という形をコードで表せるようになった。
  • ifelse を組み合わせて、「最終日」と「途中の日」でメッセージを切り替えられるようになった。
  • daytotal_days の値を変えて、同じコードが「違う状況のレポート」になる感覚を持てた。
  • インデント(字下げ)が、「どこまでが if の中身なのか」を示す大事な印だと理解し始めた。

7日目は、この1週間を振り返る日です。

  • print
  • 数字と計算
  • 変数
  • 画面の形(レポート)
  • if(条件でメッセージを変える)

これらを、自分の言葉で説明できるかどうかを確認しながら、
「自分で説明できるレベルでの総まとめ」 をしていきます。

最後にひとつ、あなたに聞きたい。

今日のコードのどこかで、
「お、ここだけメッセージ変わるの、ちょっとアプリっぽいな」と感じた場所はありましたか?

最終日のメッセージかもしれないし、
途中の日への励ましの一言かもしれません。

その「アプリっぽさを感じた瞬間」が、
あなたと if をつなぐ一番大事なポイントです。

その感覚を持ったまま、7日目の総まとめに進んでいきましょう。

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました