PR
更新:2024/10/17

Pythonの関数の使い方・引数・返り値・例題について

はるか
はるか
関数って、プログラムで使う一部のコードを再利用するためのもの。
ふゅか
ふゅか
そうそう!再利用するとコードが短くて読みやすくなるし、バグも減るのよ!

1. 関数とは?

関数は、プログラムの一部を再利用するための仕組みです。関数を使うことで、コードの重複を避け、コードをより読みやすく、管理しやすくできます。

1.1. 関数の基本的な構造

Pythonの関数は、次のような構造を持っています。

def 関数名(引数1, 引数2, ...):
    処理
    return 戻り値
  • def: 関数を定義するためのキーワード。
  • 関数名: 関数の名前。通常、小文字で始め、必要に応じてアンダースコアで単語をつなげます(例: calculate_sum)。
  • 引数(パラメータ): 関数に渡すデータ。複数の引数をカンマで区切って渡すことができます。
  • 処理: 関数内で実行されるコード。関数の本体です。
  • return: 関数の結果を呼び出し元に返すために使います。

1.2. 基本的な例

def greet(name):
    """指定された名前で挨拶をする関数"""
    return f"こんにちは、{name}さん!"

この例では、greetという関数が定義されています。nameという引数を受け取り、その人に挨拶を返します。

使い方:

print(greet("ふゅか"))

出力:

こんにちは、ふゅかさん!

1.3. 引数についての詳細

関数には、次のような引数があります。

デフォルト引数: 関数を呼び出すときに引数を省略でき、その場合デフォルト値が使用されます。

def greet(name="ゲスト"):
    return f"こんにちは、{name}さん!"

この場合、greet()を引数なしで呼び出すと「こんにちは、ゲストさん!」が表示されます。

可変長引数: 引数の数が不定の場合、args*kwargsを使うことで複数の引数を扱えます。

def sum_numbers(*args):
    return sum(args)

print(sum_numbers(1, 2, 3))  # 6
ふゅか
ふゅか
greet関数では、引数を渡さなかった場合、「ゲストさん」と挨拶してくれるのよ。
はるか
はるか
戻り値はreturnで返す。計算結果とか。

1.4. returnについて

returnは関数の実行結果を返すために使います。関数が何も返さない場合、デフォルトでNoneが返されます。

def square(x):
    return x * x

result = square(3)
print(result)  # 9

returnを使わない関数も作ることができます。例えば、画面にメッセージを表示するだけの関数は次のようになります。

def show_message():
    print("Hello, World!")

この関数は何も返しませんが、実行時にメッセージが表示されます。

2. 例題

2.1. 例題1(二乗和の計算)

引数として与えられたリストの要素をすべて2乗し、その合計を返す関数 square_sum() を作成しなさい。

次のリスト [1, 2, 3, 4, 5] を引数として渡した場合の結果を求めなさい。

期待される出力:

55

解答の手順:

  1. 関数 square_sum() を定義する。
  2. 引数としてリストを受け取り、そのリストの要素をすべて2乗する。
  3. 各要素を2乗した結果のリストを作成し、その合計を計算する。
  4. 最終的な合計を返す。

解答:

def square_sum(numbers):
    return sum([x ** 2 for x in numbers])

# テスト
numbers = [1, 2, 3, 4, 5]
result = square_sum(numbers)
print(result)  # 出力: 55

2.2. 例題2(油汚れ)

油汚れの除去効率を計算する関数 oil_removal_efficiency() を作成しなさい。この関数は、次のパラメータを受け取ります。
  • initial_oil (初期の油汚れの量、単位はグラム)
  • cleaning_cycles (洗浄サイクル数)
  • removal_rate (1回の洗浄サイクルで取り除ける油の割合、0から1の間の値)

関数は、指定された洗浄サイクル数後に残っている油汚れの量を計算し、取り除かれた油の合計を返します。

初期の油汚れが100グラムで、洗浄サイクルが3回、除去率が0.3(30%)の場合、結果を求めなさい。

期待される出力:

65.7グラム

解答の手順:

  1. 関数 oil_removal_efficiency() を定義する。
  2. 引数として初期の油の量、洗浄サイクル数、除去率を受け取る。
  3. 各洗浄サイクルで、油汚れを除去率に基づいて減少させる。
  4. 最終的に残っている油の量を計算し、初期油量からその差を引いて、取り除かれた油の量を返す。

解答:

def oil_removal_efficiency(initial_oil, cleaning_cycles, removal_rate):
    remaining_oil = initial_oil

    for _ in range(cleaning_cycles):
        removed_oil = remaining_oil * removal_rate
        remaining_oil -= removed_oil

    total_removed = initial_oil - remaining_oil
    return total_removed

# テスト
initial_oil = 100  # グラム
cleaning_cycles = 3
removal_rate = 0.3  # 30%

result = oil_removal_efficiency(initial_oil, cleaning_cycles, removal_rate)
print(f"{result:.1f}グラム")  # 出力: 65.7グラム


check

Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!

Pythonの記事のまとめ

PR