创建10个彼此不重叠的数字的列表,并将它们加起来

时间:2019-04-10 04:54:28

标签: python list loops sum

我应该写一个代码,要求用户输入10个数字,并用它创建一个列表,然后将它们加总。我目前能够做到。但是,我不知道如何检查数字是否相互重叠。如果是这样,则不应将该号码添加到列表中。

因此,我能够运行该程序,以便要求输入10次数字。但是,此后,在产生和时似乎存在语法错误。

numberList = []

for i in range (0,10):
    number= int(input("Please enter a number: "))
    numberList.append(number)
    total = sum(numberList)
  

总计= sum(numberList)
  TypeError:“ int”对象不可调用

2 个答案:

答案 0 :(得分:1)

如果条件为“ not in”,则可以使用它,它只会在列表中添加新数字。我在进行求和运算时没有任何错误。可能有总和缩进问题,请检查。

numberList = []
for i in range (0,10):
    number= int(input("Please enter a number: "))
    if number not in numberList:
        numberList.append(number)

print "List formed: %s" %numberList
total = sum(numberList)
print "Sum of all elements in list: %d" %total

控制台:

Please enter a number: 1
Please enter a number: 2
Please enter a number: 3
Please enter a number: 4
Please enter a number: 5
Please enter a number: 1
Please enter a number: 2
Please enter a number: 3
Please enter a number: 4
Please enter a number: 5
List formed: [1, 2, 3, 4, 5]
Sum of all elements in list: 15

答案 1 :(得分:0)

可以通过几种不同的方式从python列表中删除重复项。对于需要保持顺序的列表,最常见的是将其转换为OrderedDict,因为dictionary键必须唯一,不会为重复的元素创建其他键。

由于我们要找到数字的总和,所以顺序无关紧要,因此我们可以使用内置方法set()将任何iterable转换为set(本质上,必须具有唯一元素)。

如果您需要将其作为列表,则可以随后将其转换回列表:

numberList = list(set(numberList))

reducemapfilter是在任何编程语言中学习的一些最重要的功能。对于这种用例,reduce()是完美的,它执行滚动计算。

from functools import reduce
final_sum = reduce((lambda x, y: x + y), numberList)