Python

Метод исключения в цикле for?

На курсах в домашке такое задание:

Вводится число N,
далее еще N − 1 чисел:
номера оставшихся карточек (различные числа от 1 до N).
Программа должна вывести номер потерянной карточки.

Например: есть 5 карточек, цикл идёт in range(1, 5). Вводим по очереди 1,2,4,5. И методом исключения программа должна вывести 3. Я так и не смог найти алгоритм, по которому введенные числа должны исключаться из range, чтобы остался только 1 вариант...
Сергей Сорокин
Сергей Сорокин
80 173
Для решения этой задачи можно использовать функцию range() и цикл for. В цикле for мы будем перебирать числа от 1 до N и проверять, есть ли текущее число в списке введенных чисел. Если число есть в списке, то мы его удаляем из списка. В конце цикла у нас останется только одно число - это и будет номер потерянной карточки.

Вот пример кода на Python:
 n = int(input()) 
cards = list(range(1, n + 1))
for i in range(n - 1):
card = int(input())
cards.remove(card)
print(cards[0])
Если вы хотите использовать метод исключения, то можно создать два списка: один список будет содержать все числа от 1 до N, а второй список будет содержать введенные числа. Затем мы будем перебирать все числа из первого списка и проверять, есть ли они во втором списке. Если число не найдено во втором списке, то это и будет номер потерянной карточки.

Вот пример кода на Python:
 n = int(input()) 
all_cards = list(range(1, n + 1))
input_cards = []
for i in range(n - 1):
card = int(input())
input_cards.append(card)
lost_card = list(set(all_cards) - set(input_cards))[0]
print(lost_card)
Борис Вайсберг
Борис Вайсберг
25 860
Лучший ответ
Питон питоном, а сам алгоритм не понятен. Что такое "исключить", при каких условиях исключить, почему именно 3 исключаем из пяти:
есть 5 карточек, цикл идёт in range(1, 5). Вводим по очереди 1,2,4,5. И методом исключения программа должна вывести 3
Написать проверку условия в цикле никак?
Дмитрий .
Дмитрий .
89 135
Сергей Сорокин Дано: есть N карт с порядковыми номерами. Одна карта потеряна. В данном случае допустим, что N = 5. Нужно перечислить номера имеющихся карт (допустим, 1, 2, 4 и 5). Методом исключения программа должна вычислить, что не хватает карты за номером 3.
Сергей Сорокин То есть, есть
N = int(input('Введите количество карт')
Далее
for cards in range(1, N)
Далее методом input запрашиваются номера карт, которые есть.
Сергей Сорокин Что делать дальше, располагая только for, range и кортежами, я не вкуриваю
Дмитрий .
То есть суть именно в том, чтобы каким-то образом исключить названные карты из списка
Из списка??! Тогда используй метод удаления в списке при условии, что введенная пользователем карта в нём присутствует.
На for, range и кортежах:
 n = int(input())
ks = (int(input()) for _ in range(1, n))
cs = (False,) * n
for k in ks: cs = cs[:k-1] + (True,) + cs[k:]
print(*(j+1 for j in range(n) if not cs[j]), sep = '\n')
Кортежи используются в качестве списков. Поскольку они немутабельные, в каждой итерации формируется новый кортеж.

На for, range и битовых масках:
 n = int(input())
ks = (int(input()) for _ in range(1, n))
c = 0
for k in ks: c |= 1
Если i не соответствует введенному числу добавляем в массив.
Сергей Сорокин Мы не проходили массивы...
В конкретном задании можно использовать только то, что было пройдено в модуле. Это цикл for, функция range, в дополнительных материалах указан кортеж.