【问题标题】:How to sum even or odd numbers in a list given the condition odd or even?给定条件奇数或偶数,如何对列表中的偶数或奇数求和?
【发布时间】:2020-10-28 05:00:32
【问题描述】:

所以问题是要求我在给定条件奇数或偶数的情况下返回列表中偶数或奇数元素的总和。所以如果条件是奇数,我必须返回所有奇数的列表。如果列表为空/值与条件不匹配,则返回 0。

这是我目前所拥有的:

l = [1,2,3,4,5,6]

def conditionalSum(value, condition):
    s = 0
    if condition == "even":
        for i in l:
            if i % 2 == 0:
                s += i
    elif condition == "odd":
        for i in l:
            if i % 2 !=0:
                s = s+ i
    else:
        return 0

当我尝试运行它时,什么都没有出现 - 甚至没有错误!任何帮助表示赞赏

【问题讨论】:

  • 你在哪里返回s
  • 如果你在函数末尾无条件地return s(这将解决主要问题),那么你实际上不需要else块,因为如果两者都没有,0将被返回已输入 ifelif 块。
  • 有道理,谢谢!

标签: python function for-loop if-statement conditional-statements


【解决方案1】:

可以使用内置的sum 函数将您的代码修改为更加 Pythonic。

l = [1, 2, 3, 4, 5, 6]

def conditionalSum(value, condition):
    if condition == "even":
        return sum(i for i in l if i % 2 == 0)

    elif condition == "odd":
        return sum(i for i in l if i % 2 == 1)

    else:
        return 0

print(conditionalSum(value, "even"))

输出:

12

顺便说一句,你的函数 conditionalSum 中有一个未使用的变量 value

【讨论】:

  • 很好,但是我发现i % 2 == 0 然后i % 2 != 0 有点“令人困惑”,如果使用其他模数,这种方法也不起作用。我更喜欢明确检查 == 0== 1 的一致性。
  • 谢谢你添加这个,我现在正在练习这些生成器表达式,所以这很棒
  • 感谢您的建议。我已经更新了答案。
  • 是的,删除了 s=0 语句并对其进行了编辑以包含未使用的变量“value”
  • 目前的功能存在一些问题。您忽略了传递给它的参数value,而是使用从外部范围获取的l 变量。实际上,显示的输出 不是 的代码,因为它当前的状态 - 这会在尝试的函数调用中引发 NameError(从未分配过 value)。
【解决方案2】:
  1. 你需要调用函数:例如conditionalSum(l, "even")
  2. 对于“偶数”和“奇数”这 2 个条件,您不会返回任何值。更正的代码:
l = [1,2,3,4,5,6]

def conditionalSum(value, condition):
    s = 0
    if condition == "even":
        for i in value:
            if i % 2 == 0:
                s += i
    elif condition == "odd":
        for i in value:
            if i % 2 !=0:
                s += i
    return s

print(conditionalSum(l,"even"))
print(conditionalSum(l,"odd"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多