Форум сайта python.su
Здравствуйте.
Есть такая задачка:
Напишите следующую программу. Пользователь вводит список целочисленных значений, а также верхнюю границу для вычисления суммы.
Программа вычисляет сумму натуральных чисел, но за исключением тех, которые входят в список. Например, если пользователь ввел список: 2,5,6 и 10 в качестве верхней границы суммы, то программа должна
вычислить сумму чисел от 1 до 10, но без учета чисел 2, 5 и 6.
Помогите разобраться, не могу понять. Основное все работает, а вот сумму чисел не получается вывести.
Вот мой код:
sp = eval(input('введите список целочисленных значений: ‘))
gr = eval(input(’введите границу списка: ‘))
for i in range(gr):
k = set(str(i)) - set(str(sp))
for s in k:
print(’'.join(s), end=', ')
Отредактировано AleksandrM (Дек. 4, 2021 09:15:12)
Офлайн
>>> def f(): ... numbers = set(map(int, input('numbers: ').split())) ... maximum = int(input('maximum: ')) ... out = 0 ... for i in range(1, maximum + 1): ... if i not in numbers: ... out += i ... print(out) ... >>> f() numbers: 2 5 6 maximum: 10 42 >>>
>>> def f(): ... numbers = set(map(int, input('numbers: ').split())) ... maximum = int(input('maximum: ')) ... out = sum(i for i in range(1, maximum + 1) ... if i not in numbers) ... print(out) ... >>> f() numbers: 2 5 6 maximum: 10 42 >>>
Отредактировано py.user.next (Дек. 4, 2021 10:30:21)
Офлайн
У меня почему то Ваш код выдает ошибку.
Прикреплённый файлы:
2021-12-04_142509.png (52,4 KБ)
Офлайн
Спасибо, разобрался.
Не надо ставить запятые.
А как написать этот код попроще:
out = sum(i for i in range(1, maximum + 1) if i not in numbers)
Офлайн
Я нашёл варинат, при котором пользователь может вводить числа без пробела:
numbers = list(input(“Введите числа: ”))
numbers_str = ‘ ’.join(number)
maximum = int(input(“Введите максимум: ”))
number_list = list(map(int, number_str.split()))
ans = 0
for i in range(1, maximum + 1):
if i not in number_list:
ans += i
else:
ans += 0
print(ans)
Отредактировано Yurii_Mikhailovich (Янв. 3, 2024 19:02:59)
Офлайн