Я должен написать код, который запрашивает у пользователей 10 чисел, создает список из них, а затем суммирует их все. В настоящее время я могу это сделать. Однако я не знаю, как проверить, что числа не перекрывают друг друга. Если они это сделают, номер не должен быть добавлен в список.
Таким образом, я могу заставить программу работать так, чтобы она запрашивала число 10 раз. Однако после этого появляется синтаксическая ошибка при вычислении суммы.
numberList = []
for i in range (0,10):
number= int(input("Please enter a number: "))
numberList.append(number)
total = sum(numberList)
total = sum(numberList)
TypeError: 'int' object is not callable
переменная sum может быть перегружена. sum - это встроенная функция в python. Возможно, вы изменили определение суммы имени, создав переменную с тем же именем.






Вы можете использовать условие if с «не в», оно только добавит новые номера в список. Я не получаю никаких ошибок при выполнении операции суммирования. Возможно, есть проблема с отступом суммы, пожалуйста, проверьте это.
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, потому что 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)
Почему бы вам не использовать встроенный sum вместо reduce? Что еще хуже, вы заменяете функцию sum на int, что, похоже, является проблемой в вопросе.
ОП перегрузил метод sum, на самом деле проблема в этом, а не в том, что результатом является int. Что вы говорите о замене метода sum на int? Функция sum все равно возвращает int.
После того, как вы используете sum = ..., sum преобразуется в int. Если вы попытаетесь использовать sum(numberList) в этот момент, вы получите сообщение об ошибке от OP, что int не вызывается.
Извините, ваше первое сообщение было неясным, у вас проблема с именем переменной. Я изменю пост, все хорошо :)
У вас есть переменная с именем
sum?