我的程序会打印加入的列表,而不是添加它的元素

时间:2019-10-07 19:00:59

标签: python list function

我被要求编写一个名为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

请帮助我修复它,谢谢!

3 个答案:

答案 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!