моя программа печатает список соединенных вместо добавления его элементов - PullRequest
0 голосов
/ 07 октября 2019

Меня попросили написать функцию с именем 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 голосов
/ 07 октября 2019

Я думаю, это может быть то, что вы пытаетесь сделать, или что-то вроде этого близко.

0 голосов
/ 07 октября 2019
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!
0 голосов
/ 07 октября 2019

Первое, что вам нужно сделать, это проверить тип каждого элемента.

Таким образом, при выполнении условия if/else в цикле for рассмотрите возможность проверки того, что все элементы одного типа. Что-то вроде:

for item in lst:
    if (type(item) != lst[0]):
         break;

Если я правильно понял вашу проблему, только если нет разницы между всеми элементами, тогда должна быть выполнена желаемая операция.

Я надеюсь, что это можно прояснить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...