【问题标题】:sum of negative int in list列表中负整数的总和
【发布时间】:2016-02-01 21:15:57
【问题描述】:

我正在尝试在用户输入列表中添加所有负整数,但该函数始终返回 0 作为答案。如果我将列表作为函数的一部分包含在内,它会起作用,但在用户输入时不起作用。我的代码是:

def sumNegativeInts(userList):
    userList = []
    sum = 0
        for i in userList:
            if i < 0:
            sum = sum + i
            return sum

userList = input("Enter a list of +/- integers: ")
print(sumNegativeInts(userList))

【问题讨论】:

  • 三大问题。 1. 您正在重新分配一个空列表。因此,没有要添加的元素。 2. 您在第一次迭代中返回sum。 3. input 函数将返回一个字符串,而不是数字列表。您需要自己拆分字符串并将字符串转换为数字。

标签: python list python-3.x sum negative-number


【解决方案1】:
sum(i for i in alist if i < 0)

完成。是 Python,一定要简单!

【讨论】:

    【解决方案2】:

    删除您的代码的第二行,无论您的输入是什么,它都会将输入设置为一个空列表。

    【讨论】:

      【解决方案3】:

      你每次进入函数都给userList赋值一个空列表,怎么可能不为0呢?

      此外,函数 input() 似乎无法处理输入列表。

      所以我认为你可以这样做:

      def sumNegativeInts(userList):
          sum = 0
          for i in userList:
              if i < 0:
                  sum += i
          return sum
      
      inputData = raw_input('some prompts')
      userList = [int(i) for i in inputData.split(' ')]
      print(sumNegativeInts(userList))
      

      【讨论】:

        【解决方案4】:

        您总是可以只使用 if 和 elif 语句来确定是否将一个数字添加到列表中,然后获取列表的总和。我的提示是列出 100 个数字,其中包含从 -100 到 100 的随机整数。然后找到所有负数的总和。

            import random
            def SumNegative():
                 my_list = []
                 for i in range(100):
                     x = random.randint(-100, 100)
                     if x > 0:
                         pass
                     elif x < 0:
                         my_list.append(x)
                  print(sum(my_list))
            SumNegative()
        

        【讨论】:

        • if x &lt; 0: 就够了,先if 声明没用。
        猜你喜欢
        • 2016-04-23
        • 2012-03-21
        • 1970-01-01
        • 1970-01-01
        • 2021-03-07
        • 2020-02-04
        • 2021-08-11
        • 2013-02-10
        • 1970-01-01
        相关资源
        最近更新 更多