私は整数年を受け取る関数を持っていますが、文字列'ALL'
を渡すことができ、何かを返すこともできます。お互いに頼っているが同じ結果につながる2つの条件を単純化するには?
私は今、このコードの醜い部分を持っている:
if type(year) != str or (type(year) == str and year.upper() != 'ALL'):
total_results = self.filterResultsByYear(total_results, year, year2)
結果は現在の年に、デフォルトでフィルタリングされ、そして他の年によってフィルタリングすることができますが、ユーザーがフィルタリングないしたい場合、彼らが持っていますその年の「すべて」を渡す。
私が上記の忌み嫌いを書いた理由は、私がちょうどif year.upper() != 'ALL'
を持っていれば、私は整数を渡すとTypeError
が得られます。もし私がif type(year) != str and year.upper() != 'ALL'
を置くと、私はまだ同じエラーが出ます。上記のコードは本当に醜いと私はそれをもっとpythonicにしたいと思った。これを行うにはどんなツールが必要ですか? total_results
とyear2
があり、あなたがそれらを処理したいのか内容に応じて
'year'が文字列であり、" all "でない場合に期待される動作は何ですか? – DyZ
あなたは常に有効な入力を期待していますか?そうでない場合は、有効な年であるかどうかをチェックするか、フィルターをまったく適用しないでください。 – KGS
@DYZ入力が無効であることをユーザーに警告するエラーを投げたい。基本的には、フィルターをデフォルトで適用し、ユーザーがintを提供する場合、ユーザーが文字列を指定し、その文字列が '' all''になった場合、フィルターを無視します。 – PolarBearITS