コードが少し長くなってきたので、自作関数を使って整理してみます。
プログラム自体が入力→処理→出力になっていますが、
その中にさらに小さな入力→処理→出力を自分で定義するものが、自作関数になります。
自作関数の基本
# 関数を定義するには[def]を使用します。
# 関数名の後ろに()と[:]を忘れずに。
# 関数の中身となる行にはインデント(文頭の空白)を付けます。
# Spyderの場合、Tabキーでインデントが付けられます。
def sample1():
print("サンプル1関数を呼び出しました。")
# 関数を使用するときは関数名と()を書きます。
# 以下のように書くと、関数sample1の中身が実行されます。
sample1()
# 次は関数に対して入力と出力を設定します。
# 入力は、関数を定義するときに()内に入力となる変数を定義します。
# 出力は、関数の中で[return]を使って定義します。(以下の場合、numが出力)
def sample2(num1, num2):
print("サンプル2関数を呼び出しました。")
num = num1 + num2
return num
# 使用するときは()内に入力したい値を書きます。
# 以下のように書くと、num1=3, num2=5として、関数sample2が実行されます。
# 出力される値を別の変数に格納するパターンがよく使われます。
out = sample2(3, 5)
print("出力は" + str(out) + "です。")
# print関数で直接出力することも可能です。
print(sample2(10, 20))
# 関数のルールとして、使用する前に定義する(コードとしては上に書く)というものがあります。
簡易レジに対して自作関数を活用してみます。
appleCount = input("りんごの個数を入力してください: ")
orangeCount = input("みかんの個数を入力してください: ")
appleCount = int(appleCount)
orangeCount = int(orangeCount)
applePrice = 200
orangePrice = 100
appleSetcount, appleSetprice = 3, 500
orangeSetcount, orangeSetprice = 5, 450
# りんごとみかん、それぞれの合計金額を計算する部分を関数にします。
def calc(count, price, setCount, setPrice):
totalprice = count // setCount * setPrice + count % setCount* price
return totalprice
# 関数の出力を別の変数に代入します。
appleTotalprice = calc(appleCount, applePrice, appleSetcount, appleSetprice)
orangeTotalprice = calc(orangeCount, orangePrice, orangeSetcount, orangeSetprice)
totalprice = appleTotalprice + orangeTotalprice
print("合計金額は" + str(totalprice) + "円です。")
関数は使用する前に定義する必要がありますが、
コードの本体とは分けてあったほうが見やすいので、少し工夫します。
# まず本体の部分をmainという関数にします。
def main():
appleCount = input("りんごの個数を入力してください: ")
orangeCount = input("みかんの個数を入力してください: ")
appleCount = int(appleCount)
orangeCount = int(orangeCount)
applePrice = 200
orangePrice = 100
appleSetcount, appleSetprice = 3, 500
orangeSetcount, orangeSetprice = 5, 450
appleTotalprice = calc(appleCount, applePrice, appleSetcount, appleSetprice)
orangeTotalprice = calc(orangeCount, orangePrice, orangeSetcount, orangeSetprice)
totalprice = appleTotalprice + orangeTotalprice
print("合計金額は" + str(totalprice) + "円です。")
# りんごとみかん、それぞれの合計金額を計算する部分をmain関数の外に出します。
def calc(count, price, setCount, setPrice):
totalprice = count // setCount * setPrice + count % setCount* price
return totalprice
# main関数を実行します。
main()
上のコードはまずmainとcalcの2つの関数を定義します。その後でmain関数を実行しています。
calcPrice関数を定義するよりも上で使っているように見えますが、
実際に実行されるのは最後のmain()であり、それよりも上で定義しているので、問題ありません。
ところで、短くスマートに書くために関数を使ったはずなのに、結局長くなってしまいました。
次回は自作関数とも相性のよいリストとループ処理を使って、少しスマートにしてみます。