Создайте список из 10 чисел, которые не пересекаются друг с другом, и сложите их

Я должен написать код, который запрашивает у пользователей 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?

Selcuk 10.04.2019 06:59

переменная sum может быть перегружена. sum - это встроенная функция в python. Возможно, вы изменили определение суммы имени, создав переменную с тем же именем.

Advay Umare 10.04.2019 07:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
130
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать условие 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, что, похоже, является проблемой в вопросе.

John La Rooy 10.04.2019 08:33

ОП перегрузил метод sum, на самом деле проблема в этом, а не в том, что результатом является int. Что вы говорите о замене метода sum на int? Функция sum все равно возвращает int.

James Lane 11.04.2019 02:44

После того, как вы используете sum = ..., sum преобразуется в int. Если вы попытаетесь использовать sum(numberList) в этот момент, вы получите сообщение об ошибке от OP, что int не вызывается.

John La Rooy 11.04.2019 22:53

Извините, ваше первое сообщение было неясным, у вас проблема с именем переменной. Я изменю пост, все хорошо :)

James Lane 12.04.2019 05:29

Другие вопросы по теме