2016-04-03 16 views
0

私は2つの条件、abを持っています。 aが真の場合は1ブロックのコードが実行され、aまたはbのいずれかが真の場合は、1ブロックのコードが実行されます。次のコードよりもコードを構造化する良い方法がありますか?aの繰り返しテストを避けることはできますか?繰り返しを避けるためにこのコードをどのように構造化できますか?

if a or b: 
    if a: 
     <block 1> 
    <block 2> 

答えて

1

繰り返しテストなしでは不可能です。これを確認するには、真理値表を書き留めてください。これは、コードをより読みやすくすることができ

if a: 
    <block 1> 
if a or b: 
    <block 2> 

:あなたのif文のネストを避けることができしかし

ここでは、aがブール値であり、評価するのに高価な複雑な式のプレースホルダーではないと仮定します。後者の場合は、式を1回だけ評価し、その結果をブール値に代入します。

+0

ありがとうございました。 'a'はより複雑な表現のプレースホルダーです - 私はあなたの助言に従い、結果を保持する変数を作成します。 – user200783

関連する問題