Python 创建一个10个相互不重叠的数字的列表,并将它们相加
我应该写一个代码,要求用户输入10个数字,用这些数字创建一个列表,然后把它们全部加起来。我现在能做到这一点。但是,我不知道如何检查这些数字是否相互重叠。如果他们这样做,则不应将该号码添加到列表中 因此,我能够让程序运行,这样它要求一个数字10次。但是,在此之后,在生成总和时似乎出现语法错误Python 创建一个10个相互不重叠的数字的列表,并将它们相加,python,list,loops,sum,Python,List,Loops,Sum,我应该写一个代码,要求用户输入10个数字,用这些数字创建一个列表,然后把它们全部加起来。我现在能做到这一点。但是,我不知道如何检查这些数字是否相互重叠。如果他们这样做,则不应将该号码添加到列表中 因此,我能够让程序运行,这样它要求一个数字10次。但是,在此之后,在生成总和时似乎出现语法错误 numberList = [] for i in range (0,10): number= int(input("Please enter a number: ")) numberList
numberList = []
for i in range (0,10):
number= int(input("Please enter a number: "))
numberList.append(number)
total = sum(numberList)
总计=总和(数字列表)TypeError:“int”对象不可调用
如果条件为“不在”,则只能在列表中添加新的数字。我在做求和运算时没有遇到任何错误。可能有总和缩进问题,请检查
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
可以通过几种不同的方式从python列表中删除重复项。对于需要保持顺序的列表,最常见的是将其转换为
OrderedDict
,因为字典
键必须是唯一的,它不会为重复的元素创建额外的键
因为我们是在寻找数字的总和,所以顺序并不重要,所以我们可以使用一个内置方法set()
,将任何iterable
转换为set
(本质上,必须有唯一的元素)
如果需要将其转换为列表,您可以在以后将其转换回列表:
numberList = list(set(numberList))
reduce
、map
和filter
是任何编程语言中都需要学习的最重要的函数。对于这个用例,reduce()
非常完美,它执行滚动计算
from functools import reduce
final_sum = reduce((lambda x, y: x + y), numberList)
是否有名为
sum
的变量?sum变量可能已重载。sum是python中的内置函数。您可能已经通过创建同名变量更改了名称sum的定义。为什么不使用内置的sum
而不是reduce
?更糟糕的是,您将sum
函数替换为int
,这似乎是问题所在。OP重载了sum
方法,这实际上是问题所在,而不是结果是int
。用int
替换sum
方法是什么意思?sum
函数返回一个int
值。在使用sum=…
后,sum
值会反弹到int值。如果此时尝试使用sum(numberList)
值,您将从操作中得到一个错误,int
值不可调用抱歉,您的第一条消息不清楚,变量的命名有问题。我会换个职位,一切都好:)