Создайте список из 10 чисел, которые не перекрывают друг друга, и сложите их - PullRequest
0 голосов
/ 10 апреля 2019

Я должен написать код, который запрашивает у пользователей 10 номеров, создать список с этим и затем суммировать их все. В настоящее время я могу это сделать. Однако я не знаю, как проверить, чтобы числа не перекрывали друг друга. Если они это сделают, номер не должен быть добавлен в список.

Так что я могу заставить программу работать так, чтобы она запрашивала число 10 раз. Однако после этого, похоже, возникла синтаксическая ошибка при создании суммы.

numberList = []

for i in range (0,10):
    number= int(input("Please enter a number: "))
    numberList.append(number)
    total = sum(numberList)

Итого = сумма (номер списка)
Ошибка типа: объект 'int' не может быть вызван

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Вы можете использовать, если условие с «не в», это только добавит новые номера в списке.Я не получаю никаких ошибок при выполнении операции суммирования.Может быть, есть проблема с отступом в сумме, проверьте это.

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
0 голосов
/ 10 апреля 2019

Удаление дубликатов из списка 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)
...