0

趣味でPythonの単位変換関数を作っています。

これまでのところ、これは私のコードです:

def UnitConverter(number,*units):
    if units == ("feet","inches"):
        return number*12
    elif units == ("ft","yd"):
        return number/3

あなたはおそらく私がこの仕事をどのように行っているかについての考えを得るでしょう.

私はエレガンス、優れたコード プラクティス、および全体的なフローに執着しているので、主な質問であるステートメント内の順列のリストを効率的にチェックするにはどうすればよいかifという質問に加えて、コーダーがこれについて一般的にどう考えているか知りたいです

例: これを機能させる効率的な方法はありますか?

def UnitConverter(number,*units):
    if units == (("feet" or "foot" or "ft."),("inches" or "in" or "in.")):
        return number*12
    elif units == ("ft","yd"):
        return number/3

そうでない場合、誰かが 3 つの引数を入力できるようにプログラムを再構築numberするunit1方法はありますunit2か?feetfootftetc

皆さんの意見をとても大切にしています。

ありがとう!

4

3 に答える 3

4

セットを使用します。

foot_units = {"ft.", "feet", "foot"}

次に、セットの所有権を確認できます。

if(units[0] in foot_units):
   ...

これを超えて、共通の変換要素に移動する conversion_factor 辞書を作成します。その後、最終的な後に強制することができます。

inches -> feet -> yards
inches -> feet -> feet

RemcoGerlich には、そのステップに対する優れたソリューションがあります。

于 2013-10-25T19:57:15.540 に答える
2

in包含をチェックする演算子を使用すると、おそらく次のようなものになります。

def UnitConverter(number,*units):
    feet = {'feet', 'foot', 'ft.'}
    inches = {'inches', 'in', 'in.'}
    yards = {'yard', 'yd', 'yd.'}
    if units[0] in feet and units[1] in inches:
        return number*12
    elif units[0] in feet and units[1] in yards:
        return number/3
于 2013-10-25T19:56:58.993 に答える