我应该写一个代码,要求用户输入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”对象不可调用
答案 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))
reduce
,map
和filter
是在任何编程语言中学习的一些最重要的功能。对于这种用例,reduce()
是完美的,它执行滚动计算。
from functools import reduce
final_sum = reduce((lambda x, y: x + y), numberList)