2017-04-16 15 views
0

これをどのようにして1つのライナーとして行うことができますか?forループを使用したPythonの1つのライナー条件付きリターン

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

これは、すでに1つのライナーのように見えます。 –

+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に注意してください):

sが反復可能であるため、
def get_sum(a, b): 
    return sum(i for i in range(min(a, b), max(a, b) + 1)) 

アンさらに短いバージョンでは、発電機が完全に構築見送るために、次のようになります。

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): ミニ=ミニ(a、b) maxi = max(a、b) 返品合計(iは範囲内(ミニ、マキシ+1))if mini!= maxi else maxi –

+1

@michael_b: 'if ... else ...'の部分は必要ありません。 –

+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

関連する問題