7

ここここIf, Elif, Elif, ...Elseに示すように、後でスイッチのようなステートメントに変更した構造の負荷を使用するプロジェクトに取り組んでいます。

If, Elif, Elseステートメントの Else に似た一般的な「ねえ、そのオプションは存在しません」ケースを追加するにはどうすればよいですIfElif?

4

5 に答える 5

9

else が本当に例外的な状況ではない場合、get にオプションのパラメーターを使用する方がよいのではないでしょうか?

>>> choices = {1:'one', 2:'two'}
>>> print choices.get(n, 'too big!')

>>> n = 1
>>> print choices.get(n, 'too big!')
one

>>> n = 5
>>> print choices.get(n, 'too big!')
too big!
于 2013-03-20T02:48:38.623 に答える
7

KeyErrorマップに値が見つからない場合に発生するエラーをキャッチし、そこでデフォルト値を返すか処理することができます。たとえば、n = 3次のコードを使用します。

if n == 1:
    print 'one'
elif n == 2:
    print 'two'
else:
    print 'too big!'

これになります:

choices = {1:'one', 2:'two'}
try:
    print choices[n]
except KeyError:
    print 'too big!'

いずれにせよ'too big!'、コンソールに出力されます。

于 2013-03-20T02:29:50.493 に答える
2

リンクした最初の記事には、非常にクリーンなソリューションがありました

response_map = {
    "this": do_this_with,
    "that": do_that_with,
    "huh": duh
}
response_map.get( response, prevent_horrible_crash )( data )

これは、 が にリストされている 3 つの選択肢のいずれでもないprevent_horrible_crash場合に呼び出されます。responseresponse_map

于 2013-03-20T02:48:44.190 に答える
1

関数 f(a,b) があり、変数 x の値に応じてパラメーターの設定が異なるとします。したがって、x='Monday' の場合は a=1 および b=3 で f を実行し、x='Saturday' の場合は a=5 および b=9 で f を実行します。そうしないと、そのような x の値はサポートされていないと表示されます。

私はするだろう

from functools import partial
def f(a,b):
 print("A is %s and B is %s" % (a,b))

def main(x):
 switcher = {
             "Monday": partial(f,a=1, b=3),
             "Saturday": partial(f, a=5, b=9)
            }
 if x not in switcher.keys():
  print("X value not supported")
  return

 switcher[x]()

このように f は switcher の宣言ではなく、最後の行で実行されます。

于 2017-08-24T19:26:17.073 に答える