2016-12-06 77 views
1

我想在python中創建一個複雜的if語句。這些陳述應該檢查兩個變量。示例代碼:複雜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 
    .... 

總共我有一個if或elif爲每個value1從0.1 - 1.每次value2是一個不同的值。我想要做的是檢查值2是否小於一個值,以便減少value1 = value -1。這是最聰明的方式,而不添加許多if -elif語句?

+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 [0]'和'pair [1]'對我來說比「left」和「right」更有意義。 – Jack

+0

如何在eq_gt_pairs中的if(value1,value2):return value1 + 0.1'? – Skycc