【问题标题】:Output all negative numbers in a list输出列表中的所有负数
【发布时间】:2017-11-19 13:59:09
【问题描述】:

如何获取列表中所有负数的输出。这是我尝试过的代码,但只能得到一个数字

#creat list using function
def Negative(List):    
      sum=0

      for i in List:
             if i < 0:
                 sum += i
                 return sum
#input and print list
inputData= input('enter numbers')

List = [float(i) for i in inputData.split(' ')]

print(Negative(List))

【问题讨论】:

  • 查看您的return 所在的位置。 return退出函数there and then,你认为它什么时候执行? if 测试多久执行一次?
  • 另外,我不确定您为什么要对负数求和,因为您的问题暗示您要查找所有负数。
  • 我会这样做:[float(i) for i in inputData.split(' ') if i
  • 是的,它只测试一次。那么在这种情况下如何运行 if 循环?
  • @SeemaShah:你应该改变你的想法。不要试图从别人那里得到解决方案,想想算法应该如何。

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


【解决方案1】:

因为一个函数只能返回一次。

return 语句终止函数的执行,并且 将控制权返回给调用函数。执行恢复在 在调用之后立即调用函数。

所以在第 8 行你返回 sum 然后存在。它不会用于循环的下一次迭代,因此它返回第一个 num ,这对于该条件是正确的。

解决方案:

将每个迭代结果存储在列表、字典等位置,然后在函数的最后返回。

你可以在这里试试:

#creat list using function
def Negative(List):
    neg_num=[]
    for i in List:
        if i<0:
            neg_num.append(i)
    return neg_num
#input and print list
inputData= input('enter numbers ')


List = [float(i) for i in inputData.split(' ')]

print(Negative(List))

输出:

enter numbers 1 -2 3 -4 5 -6 7 -8
[-2.0, -4.0, -6.0, -8.0]

正如你评论的那样:

如何统计从列表中得到的数字??

试试这个:

#creat list using function
def Negative(List):
    neg_num=[]
    for i in List:
        if i<0:
            neg_num.append(i)
    return neg_num
#input and print list
inputData= input('enter numbers ')


List = [float(i) for i in inputData.split(' ')]

print(Negative(List))
print(len(Negative(List)))

输出:

enter numbers 1 -2 3 -4 5 -6 7 -8
[-2.0, -4.0, -6.0, -8.0]
4

或者,如果您想要在程序中尝试执行的列表项总和,那么:

print(sum(Negative(List)))

补充:

您可以使用列表推导来缩短这个 for 循环逻辑:

neg_num=[i for i in List if i<0]  

等同于:

neg_num=[]
    for i in List:
        if i<0:
            neg_num.append(i)

【讨论】:

  • 非常感谢@Ayodhyankit Paul :)
【解决方案2】:
   def Negative(List):
       return [num for num in List if num<0]
   #input and print list
   inputData= input('enter numbers')
   List = [float(i) for i in inputData.split(' ')]
   print(Negative(List))

【讨论】:

  • 谢谢@Manav Gupta:)
  • 以及如何计算从列表中获得的数字? @Manav Gupta
  • print len(Negative(List)) 将显示计数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 2016-07-17
  • 2017-05-15
  • 2017-11-26
相关资源
最近更新 更多