2017-04-16 30 views
0

我該怎麼做到這一點?Python單線程條件返回for循環

def get_sum(a,b): 
    return sum(for i in range (a,b)) if a != b else a 

我嘗試了幾個不同的東西,但與for循環我無法得到它的工作。

謝謝!

錯誤:

File "", line 2 return sum(for i in range (a,b)) if a != b else a ^SyntaxError: invalid syntax

+4

這已經看起來像一個襯墊。 –

+0

它不工作,雖然 –

+0

你想讓它做什麼?我不明白你的'我在範圍(a,b)'聲明。 – Henry

回答

3

編輯: OP明確了get_sum功能的意圖,我也相應調整我的答案:

. . . find the sum of all the numbers between including them too and return it. If both numbers are equal return a or b .


您代表達應該採取的表格i for i in range(a, b)(注意附加i):

def get_sum(a, b): 
    return sum(i for i in range(min(a, b), max(a, b) + 1)) 

更短的版本將放棄發電機完全構建,因爲range s爲迭代:

def get_sum(a, b): 
    return sum(range(min(a, b), max(a, b) + 1)) 

然而,我不能告訴你方法的目的到底是什麼。 。 。是get_sum(10, 11)真的應該返回與get_sum(10, 10)相同的結果嗎?

+0

好的謝謝。我看到這個後得到它: def get_sum(a,b): mini = min(a,b) maxi = max(a,b) return sum(i for i in range(mini,maxi +1))if mini!= maxi else maxi –

+1

@michael_b:不需要'if ... else ...'部分:如果沒有這個,你的解決方案已經在'a == b'的情況下給出了正確的值。 –

+0

@MarkDickinson正是我要提到的。我剛完成編輯我的示例以適應問題描述。 – gyre

-1

隨着:

return sum(for i in range (a,b)) if a != b else a 

你可能嘗試做以下:

("return sum(range (a,b)) if a != b else a") 
+0

請檢查現有答案是否符合您在發佈自己的網站之前所打算的相同點。 – gyre

+0

@gyre只是爲了澄清當時我開始回答沒有答案。謝謝 – Gurdyal