Python | 1 日 90 分 × 7 日アプリ学習:関数で処理をまとめるアプリ(初級編)

Web APP Python
スポンサーリンク

2日目のゴール

2日目のテーマは
「def で作った関数に“入力を渡して、結果を変える”感覚をつかむこと」です。

1日目は
関数に名前をつける
関数を呼び出す(名前+かっこ)
をやりました。

今日はそこから一歩進んで、

同じ関数でも、渡す値を変えると動きが変わる
「入力」と「処理」と「結果」を意識して読む
関数を“部品”としてアプリに組み込む

ここまでを目指します。


関数を「入力を受け取る機械」としてイメージする

昨日の関数は“いつも同じことをする機械”

1日目の say_hello はこうでした。

def say_hello():
    print("こんにちは!")
Python

呼び出すたびに、
毎回まったく同じメッセージを出します。

say_hello()
say_hello()
Python

これはこれで大事ですが、
「誰にあいさつするか」を変えられたら、もっと便利ですよね。


引数つき関数の第一歩:「名前を渡してあいさつする」

def に「カッコの中の名前」が増える

次のように書き換えます。

def say_hello(name):
    print(f"{name}さん、こんにちは!")
Python

ここで増えたのが name です。

これは
「この関数が受け取る“入力の名前”」
だと思ってください。

呼び出すときは、こうなります。

say_hello("太郎")
say_hello("花子")
Python

実行結果はこうです。

太郎さん、こんにちは!
花子さん、こんにちは!

ここでの重要ポイントは、

関数の定義側
def say_hello(name):
→ 「name という入力を受け取ります」と宣言している

関数の呼び出し側
say_hello("太郎")
→ 「’太郎’ という値を name に渡します」と指定している

という対応関係です。


「関数の中でだけ使える名前」がある、という感覚

name は“関数の中だけの変数”

次のコードを見てください。

def say_hello(name):
    print(f"{name}さん、こんにちは!")

say_hello("太郎")
print(name)  # これはエラー
Python

print(name) はエラーになります。

理由は、
namesay_hello の中だけで有効な名前だからです。

関数のカッコの中に書いた名前(ここでは name)は、
その関数の“中だけで使える変数”になります。

この「関数の中だけの世界」がある、という感覚は
関数を理解するうえでとても大事です。


def と関数呼び出しを「入力→処理→出力」で読む

例:区切り線+メッセージをまとめる

1日目の区切り線を、少し進化させます。

def print_box(message):
    print("==========")
    print(message)
    print("==========")
Python

呼び出し側はこうです。

print_box("メニューを表示します")
print_box("処理が完了しました")
Python

実行結果はこうなります。

==========
メニューを表示します
==========
==========
処理が完了しました
==========

ここで、関数をこう読んでみてください。

入力
message という名前で文字列を受け取る

処理
上と下に線を引き、その間に message を表示する

出力(画面への表示)
print で結果を見せる

この「入力→処理→出力」の流れを
自分の頭の中で言葉にできるようになると、
関数が一気に“生きたもの”になります。


小さなアプリに関数を組み込んでみる

「メニューを表示する処理」を関数にする

コンソールアプリでは、
メニューを何度も表示することがよくあります。

関数なしだと、こうなります。

print("1: 追加")
print("2: 削除")
print("0: 終了")
Python

これを関数にまとめます。

def show_menu():
    print("1: 追加")
    print("2: 削除")
    print("0: 終了")
Python

使うときはこうです。

print("簡単メニューアプリ")
show_menu()
choice = input("番号を選んでください: ")
print("あなたが選んだ番号:", choice)
Python

ここではまだ引数はありませんが、
「メニューを表示する」という意味のかたまりに名前をつけた
というのがポイントです。


引数つき関数をアプリっぽく使う

「メッセージを強調して表示する」関数

次のような関数を作ってみます。

def emphasize(message):
    print("----")
    print(message)
    print("----")
Python

これを使って、
ユーザーへの案内を少し“アプリっぽく”します。

def emphasize(message):
    print("----")
    print(message)
    print("----")

emphasize("簡単メニューアプリへようこそ")
print("1: 追加")
print("2: 削除")
print("0: 終了")
emphasize("番号を入力してください")
choice = input("番号: ")
emphasize(f"あなたが選んだのは {choice} です")
Python

ここでの深掘りポイントは、

同じ関数 emphasize
違うメッセージを渡すことで、
「同じ形で、違う内容」を表示できている

ということです。

関数は「形」を持っていて、
引数は「中身」を変えるためのスイッチ

だとイメージしてみてください。


2日目のミニアプリ:あいさつ+メニュー表示アプリ

今日の学びを全部入れたコード

def say_hello(name):
    print(f"{name}さん、こんにちは!")

def print_box(message):
    print("==========")
    print(message)
    print("==========")


print_box("関数練習アプリ")

user_name = input("あなたの名前を入力してください: ")
say_hello(user_name)

print_box("メニュー")
print("1: 今日の目標を表示")
print("0: 終了")

choice = input("番号を選んでください: ")

if choice == "1":
    print_box("今日の目標:def と関数呼び出しを理解する")
else:
    print_box("アプリを終了します")
Python

この中で、

def say_hello(name):
→ 「name という入力を受け取って、あいさつする処理」

def print_box(message):
→ 「message を枠で囲んで表示する処理」

user_name = input(...)
→ ユーザーからの入力を受け取って、関数に渡している

という流れになっています。


つまずきポイントをもう一段深く押さえる

名前のつけ方で混乱しないコツ

よくある混乱がこれです。

def say_hello(name):
    print(f"{name}さん、こんにちは!")

user_name = input("名前: ")
say_hello(user_name)
Python

ここで、

nameuser_name は別物です。

user_name は「関数の外側の変数」
name は「関数の中だけで使える変数」

呼び出しのときに、
user_name の中身が name にコピーされるイメージです。

「外の名前」と「中の名前」は別でいい
という感覚を持っておくと、かなり楽になります。


2日目のまとめ:今日つかんでほしい感覚

今日の本質は、これです。

関数は「名前のついた処理のまとまり」だけでなく
「入力を受け取って、動きを変えられる部品」である。

def 関数名(引数名):
→ 「こういう入力を受け取る処理ですよ」と宣言している

関数名(値)
→ 「この値をその処理に渡して実行して」と命令している

引数は「関数の中だけで使える変数」
同じ関数でも、渡す値を変えれば結果が変わる

ここまでイメージできていれば、
3日目以降の「戻り値」「関数を組み合わせる」が
ぐっと理解しやすくなります。

タイトルとURLをコピーしました