2016-12-06 5 views
1

私は複雑なif文をPythonで作成しようとしています。これらの文は2つの変数をチェックする必要があります。サンプルコード:合計で複雑なif-elifをPythonで

if value1 == 0.1 and value2 > 2.05: 
     value1 = value1 + 0.1 
     return value1 
    elif value1 == 0.2 and value2 > 1.85: 
     value1 = value1 + 0.1 
    elif value1 == 0.3 and value2 > 1.95: 
     value1 = value1 + 0.1 
    elif value1 == 0.4 and value2 > 2.05: 
     value1 = value1 + 0.1 
    ... 
    if value1 == 0.1 and value2 < 1.75: 
     return value1 
    elif value1 == 0.2 and value2 < 1.85: 
     value1 = value1 - 0.1 
    elif value1 == 0.3 and value2 < 1.95: 
     value1 = value1 - 0.1 
    elif value1 == 0.4 and value2 < 2.05: 
     value1 = value1 - 0.1 
    .... 

0.1から場合はすべての値1のためのelif私は - たびに値2が異なる値である1。私がしたいことは、value1 = value -1を減らすために、value2が値より小さいかどうかをチェックすることです。多くのif-ifif文を追加することなく、これを行う最も巧妙な方法は何ですか?

+1

を」と表示されます – Sayse

+2

ループを使用して変数を増やしてみてください –

+0

if-elifのバージョンを投稿できますか?それから、最適化を助けることができます。あなたがしようとしていることを正確に伝えるのは難しいです。 –

答えて

4

そこにはパターンがありませんか、それが簡単にループを構築することができないほど複雑だ場合、私はこのようなものだろう:どのようなパターン「別の値ということを知らずに言うのは難しい厥

eq_gt_pairs = ((0.1, 2.05), (0.2, 1.85), (0.3, 1.95), (0.4, 2.05)) # ... 

eq_lt_pairs = ((0.1, 1.75), (0.2, 1.85), (0.3, 1.95), (0.4, 2.05)) # ... 

for pair in eq_gt_pairs: 
    if value1 == pair[0] and value2 > pair[1]: 
     return value1 + 0.1 

for pair in eq_lt_pairs: 
    if value1 == pair[0] and value2 < pair[1]: 
     return value1 - 0.1 
+0

ペアを解凍してみませんか? 'の場合は、左の方がeq_gt_pairsにあります:もしvalue1 == leftとvalue2> right:' – Bakuriu

+0

@Bakuriuこれは私のコードであり、 'pair [1]'は 'left'と' right'よりも私にとって意味があります。 – Jack

+0

eq_gt_pairsの 'if(value1、value2):return value1 + 0.1'はどうですか? – Skycc