2016-03-23 11 views
1

私は初心者で、オンラインブックを使ってオンラインのPythonクラスを作成しています。python 3.5.1のキーワードとデフォルトの引数を組み合わせる

問題の説明: ドルの数値と(オプションで)数値が与えられた場合のペニーの総数を返す関数number_of_pennies()を書くと、ペニーの数。例:5ドルと6ペニーは、ここでは506

を返し、私が持っているものである:あなたの助けに

def number_of_pennies(dollars =(),pennies=()) 

    return number_of_pennies 
print(number_of_pennies(5, 6)) # Should print 506 
print(number_of_pennies(4)) # Should print 400 

おかげで私はこれにそれを変更:

def number_of_pennies(dollars = 0,pennies=0): 
    number_of_pennies= (dollars * 100) + pennies 
    return number_of_pennies 
print(number_of_pennies(5, 6)) # Should print 506 
print(number_of_pennies(4)) # Should print 400 
+1

ドルを100倍にしてペニーを追加します。これが最初のステップになります。 .Restは端のケースの処理になります。なぜあなたは最初にそれを試してみませんか? – karthikr

+1

ドルとペニーのデフォルトとして空の 'tuple's(かっこ)を使っているのはなぜですか?誰かが1ドルまたは1ペニーの金額で合格しなかった場合、代わりに 'dollars = 0、pennies = 0'を使用する方が合理的でしょうか? – Bahrom

答えて

1

デフォルト引数をするときに使用されています呼び出し元は値を指定しません。では、デフォルトは何でしょうか?あなたのケースでは、ユーザーがドルを供給しない場合、ゼロのドルは合理的な選択のように思えます。ペニーと同じ。 number_of_pennies(4)400なので、ドルを最初のパラメータにしたいと思っています。残りは数学だけです。

number_of_penniesは、返すのが奇妙な機能の名前に過ぎません。実際には、それを試すと<function number_of_pennies at 0x7ff4e962d488>のようなものが得られます。つまり、その関数が独自の関数オブジェクトを返したことを意味します。代わりに計算したデータを返してください...これはずっと便利です!

>>> def number_of_pennies(dollars=0, pennies=0): 
...  return dollars * 100 + pennies 
... 
>>> print(number_of_pennies(5,6)) 
506 
>>> print(number_of_pennies(4)) 
400 
+0

ありがとうございます。私はあなたの提案に従って、それは働いた! –

関連する問題