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


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(二乗和の計算)
square_sum()
を作成しなさい。
次のリスト [1, 2, 3, 4, 5]
を引数として渡した場合の結果を求めなさい。
期待される出力:
55
解答の手順:
- 関数
square_sum()
を定義する。 - 引数としてリストを受け取り、そのリストの要素をすべて2乗する。
- 各要素を2乗した結果のリストを作成し、その合計を計算する。
- 最終的な合計を返す。
解答:
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グラム
解答の手順:
- 関数
oil_removal_efficiency()
を定義する。 - 引数として初期の油の量、洗浄サイクル数、除去率を受け取る。
- 各洗浄サイクルで、油汚れを除去率に基づいて減少させる。
- 最終的に残っている油の量を計算し、初期油量からその差を引いて、取り除かれた油の量を返す。
解答:
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の魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!