我被要求编写一个名为summer的函数,该函数获取列表并返回其总和,但是仅当列表中的所有元素都属于同一类型时。 例如,如果:
summer(['a','b','c'])
结果将是:
abc
如果
summer (['True','False','True'])
结果将是:
2
但是 如果
summer (['a','1','k'])
它将打印不同类型的元素。
这是我的代码:
def summer(lst):
summary=0
for i in range(len(lst)):
if i==0:
summary=lst[0]
else:
summary+=lst[i]
return summary
lst=input("Insert list ")
lst=lst.split(',')
print(summer(lst))
我的代码只是连接所有内容:
如果输入为True, False
,则打印为TrueFalse
请帮助我修复它,谢谢!
答案 0 :(得分:0)
您要做的第一件事是检查每个元素的类型。
因此,在if/else
循环中的for
条件下,请考虑检查所有元素是否都属于同一类型。像这样:
for item in lst:
if (type(item) != lst[0]):
break;
如果我正确理解了您的问题,则只有所有元素之间没有差异,才应该执行所需的操作。
我希望可以澄清一下。
答案 1 :(得分:0)
我认为这可能是您正在尝试做的事情或有些接近。
DropColumn()
答案 2 :(得分:0)
def summer(items):
from functools import reduce
from operator import add
assert isinstance(items, list)
types = {type(item) for item in items}
if len(types) != 1:
raise TypeError("All items must have the same type!")
return reduce(add, items)
输出:
>>> summer(["a", "b", "c"])
'abc'
>>> summer([1, 2, 3])
6
>>> summer([True, False, True])
2
>>> summer([True, False, "A"])
TypeError: All items must have the same type!