Python

Помогите программу на Питоне правильно составить.

Схемотехникам в радость собирать различные устройства, только вот проблема – порой некоторых видов элементов для сбора конкретной схемы может не хватить. Юный схемотехник решил собрать некоторую схему, он знает, какие элементы ему нужны, и он знает, какие элементы ему нужны. Напишите программу, которая проверяла, сможет ли схемотехник собрать конкретную схему. Формат ввода: В первой строке вводится целое число n – количество элементов, имеющихся у схемотехника. Далее в n-строках вводятся названия видов элементов, которые у схемотехника имеются (если есть один вид, то элементов данного вида неограниченное количество). В следующей строке вводится число k – количество имеющихся у схемотехника видов элементов, в следующих k-строках вводятся названия элементов. 
n = int(input())
n_set = set()
for i in range :
elem = input()
n_set.add(elem)
k = int(input())
k_set = set()
for i in range(k):
elem = input()
k_set.add(elem)
if k_set & n_set == k_set:
print('МОЖНО СОБРАТЬ')
else:
print(len(k_set) - len(n_set & k_set))
Программа выводит "МОЖНО СОБРАТЬ", если видов элементов, имеющихся у схемотехника, достаточно для построения схемы; иначе программа выводит число количества видов элементов, которых не хватает для сборки. Для примера: Ввод Результат
4 2
резистор
транзистор
кварцевый резонатор
аккумулятор
4
транзистор
конденсатор
резистор
фотодиод
Эта программа выдает ошибку
n = int(input())
n_set = set()
for i in range(n):
elem = input()
n_set.add(elem)
k = int(input())
k_set = set()
for i in range(k):
elem = input()
k_set.add(elem)
if k_set & n_set == k_set:
print('МОЖНО СОБРАТЬ')
else:
print(len(k_set) - len(n_set & k_set))
 m = len(k_set - n_set)
if m > 0: print(m)
else: print('МОЖНО СОБРАТЬ')
Надо смотреть не пересечение, а разность множеств.
А ещё ошибка может быть связана с отступами.
Анастасия Пыщева
Анастасия Пыщева
82 197
Лучший ответ
 if n_set
Роман Котов Спасибо большое!
n = int(input())
n_set = set()
for i in range(n):
здесь клавишей Tab elem = input()
здесь клавишей Tab n_set.add(elem)

k = int(input())
k_set = set()
for i in range(k):
здесь клавишей Tab elem = input() #не ставятся пробелы в ответы, проставлю словом Tab
здесь клавишей Tab k_set.add(elem)

if k_set & n_set == k_set:
здесь клавишей Tab print(k_set & n_set)
else:
здесь клавишей Tab print(len(k_set) - len(n_set & k_set))
Иван Курушин Спасибо большое, Ваш ответ верный, главное вводить на английской раскладке;)
добрый день! Ваша 2-ая программа у меня прошла тест. нужно просто в 6-7 строке без отступа ставить... ниже скинула скрин
n = int(input())
n_set = set()
for i in range(n):
elem = input()
n_set.add(elem)
k = int(input())
k_set = set()
for i in range(k):
elem = input()
k_set.add(elem)
if k_set & n_set == k_set:
print('МОЖНО СОБРАТЬ')
else:
print(len(k_set) - len(n_set & k_set))
Роман Котов Спасибо.
Роман Котов Спасибо!
Oleg Nikiforenko Не проходит. результат должен быть 2 а получается 1.
Бабец Евгений n = int(input())
n_set = set()
for i in range(n):
elem = input()
n_set.add(elem)

k = int(input())
k_set = set()
for i in range(k):
elem = input()
k_set.add(elem)

if k_set & n_set == k_set:
print(k_set & n_set)
else:
print(len(k_set) - len(n_set & k_set))
Во-первых, условие задачи - бредовое. Авторы задачи сами хоть читают то, что насочиняли?
Во-вторых, при вводе авторы перепутали 2 множества местами, поэтому выдается ошибка. Я поменяла местами:
if k_set & n_set == n_set:
print('МОЖНО СОБРАТЬ')
else:
print(len(n_set) - len(n_set & k_set))
Ужас, но тесты прошла.
Хотя если прогонять неизмененный вариант и вводить данные так, как у них в тестах - программа работает в нормальном исполнителе..
Meram Kulkaschev
Meram Kulkaschev
127