私は、投資の価値を計算する Python 3.2 プログラムを持っています。このプログラムは、将来の任意の期間にわたって実行されます。単利と複利の両方で機能する可能性があります。問題は、「main()」と「main2()」という 2 つの関数を定義したことです。1 つ目は単利用で、2 つ目は複利用です。ここで私がやりたいことは、ユーザーからの入力を考慮して、プログラムが main() または main2() のどちらを実行するかを選択することです。これを行う方法についてのアイデアはありますか?
質問する
4293 次
2 に答える
10
まず、関数に適切な名前を付けます。次に、マッピングを使用します。
def calculate_compound(arg1, arg2):
# calculate compound interest
def calculate_simple(arg1, arg2):
# calculate simple interest
functions = {
'compound': calculate_compound,
'simple': calculate_simple
}
interest = functions[userchoice](inputvalue1, inputvalue2)
Python 関数は第一級市民であるため、それらを Python 辞書に格納し、キーを使用して検索し、呼び出します。
于 2013-01-20T15:58:27.257 に答える
2
ソリューションを Martijn のポスターとして使用できますが、if/else
Python コンストラクトを使用してルーチンsimple
またはcompound
計算ルーチンを呼び出すこともできます
複利ルーチンが追加n
のパラメーター 、利息の計算の頻度を取る必要があるという事実を考慮すると、パラメーターの長さに基づいて関数呼び出しを切り替えることができます。
また、ドライバー ルーチンは可変引数を受け入れて、両方のタイプの関数の引数を受け入れる必要があります。
>>> def calc(*args):
if len(args) == 3:
return calc_simple(*args)
elif len(args) == 4:
return calc_compund(*args)
else:
raise TypeError("calc takes 3 or 4 arguments ({} given)".format(len(args)))
>>> def calc_compund(*args):
P, r, n, t = args
print "calc_compund"
#Your Calc Goes here
>>> def calc_simple(*args):
P, r, t = args
print "calc_simple"
#Your Calc Goes here
>>> calc(100,10,2,5)
calc_compund
>>> calc(100,10,5)
calc_simple
>>> calc(100,10)
Traceback (most recent call last):
File "<pyshell#108>", line 1, in <module>
calc(100,10)
File "<pyshell#101>", line 7, in calc
raise TypeError("calc takes 3 or 4 arguments ({} given)".format(len(args)))
TypeError: calc takes 3 or 4 arguments (2 given)
>>>
于 2013-01-20T16:14:55.513 に答える