Python for one liner带有for循环的条件返回

时间:2017-04-16 07:23:57

标签: python

我怎么能做一个班轮?

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

我尝试了一些不同的东西,但是使用for循环我无法使它工作。

谢谢!

错误:

  

文件“”,第2行       如果a = = b,则返回sum(对于范围(a,b)中的i)                    ^ SyntaxError:语法无效

2 个答案:

答案 0 :(得分:3)

修改:OP澄清了get_sum功能的意图,并相应地调整了我的答案:

  

。 。 。找到包含它们之间所有数字的总和并返回它。如果两个数字相等则返回ab

您生成的表达式应采用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是可迭代的:

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

但是,我无法准确说出你的方法的目的是什么。 。 。是get_sum(10, 11)真的应该返回与get_sum(10, 10)相同的结果吗?

答案 1 :(得分:-1)

使用:

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

您可能正在尝试执行以下操作:

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