Лена.
Задача понятня.
Спасибо тебе от нуба, за задачку для тренировки….! Полезно! ))
Потратил пару часов - решил!
Т.к. я не совсем разобрался какова точная структура входных данных… - сначала у тебя документ выше уровня слова… а потом ты описываеш, что слово выше документа…. - то я сделал в 2-х варинтах.
Еще, Елена - конструкция, которую ты предоставила сначала - она действительно невозможна…. и она не рабочая… я ее воспринял как принцип, которым ты хочеш передать идею нам… а вот некоторые - восприняли буквально и “насупились”… ))) Пудь пожалуйста впредь точнее… и вставляй проверенный интерпритатором код, чтобы не было 100500 вопросов и ответов…
Вот решение твоей задачи в 2-х вариантах:
CPython 3.4.3
Вариант - слово выше документа:
DataBD={
'Вася': {'A0001':10,'A0002': 1,'A0003': 0},
'Петя': {'A0001': 0,'A0002':14,'A0003':111},
'Николай': {'A0001':15,'A0002': 1,'A0003':111},
'Оля': {'A0001': 5,'A0002':13,'A0003': 0},
'Рябоконь':{'A0001': 5,'A0002': 0,'A0003': 0},
}
itog={}
s=input('вводи уже свои слова сюды (чуствительно к регистру):')
s=s.strip()
MyWords=s.split()
MyWords=list(set(MyWords)) #отсекаем повторяющиеся слова
kolWords=len(MyWords)
if kolWords==0:
print('Слова надо вводить!!! А не тыркать энтер просто так!!!!')
else:
for cursorWord in MyWords:
if cursorWord in DataBD.keys():
for cursorDoc in DataBD[cursorWord].keys():
if DataBD[cursorWord][cursorDoc]>0.001:
if cursorDoc in itog:
itog[cursorDoc]+=1
else:
itog[cursorDoc]=1
else:
#если встретилось слово, которого вообще нет в БД, то АЛЕС! Выход и обнуление накопленного итога
itog={}
break
# Выведем результаты...
if len(itog)==0:
print('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ')
else:
itogList=[]
for cursorItog in itog.keys():
if itog[cursorItog]==kolWords:
itogList.append(cursorItog)
if len(itogList)>0.001:
print('Номера документов, которые содержат ВСЕ слова: ',itogList)
else:
print('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ')
Работа:
вводи уже свои слова сюды (чуствительно к регистру):Вася Оля Рябоконь
Номера документов, которые содержат ВСЕ слова:
вводи уже свои слова сюды (чуствительно к регистру):Вася Петя Рябоконь
Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе!
вводи уже свои слова сюды (чуствительно к регистру):Оля Вася Николай
Номера документов, которые содержат ВСЕ слова:
Вариант - документ выше слов
DataBD={
'A0001':{'Вася':10,'Петя':0,'Николай':3,'Оля':4},
'A0002':{'Вася': 0,'Петя':1,'Николай':3,'Оля':0},
'A0003':{'Вася': 1,'Петя':1,'Николай':3,'Оля':1},
'A0004':{'Вася': 7,'Петя':0,'Николай':0,'Оля':2},
'A0005':{'Вася': 1,'Петя':1,'Николай':1,'Оля':0},
}
itog={}
s=input('вводи уже свои слова сюды (чуствительно к регистру):')
s=s.strip()
MyWords=s.split()
MyWords=list(set(MyWords)) #отсекаем повторяющиеся слова
kolWords=len(MyWords)
if kolWords==0:
print('Слова надо вводить!!! А не тыркать энтер просто так!!!!')
else:
for cursorWord in MyWords:
for cursorDoc in DataBD.keys():
if cursorWord in DataBD[cursorDoc].keys():
if DataBD[cursorDoc][cursorWord]>0.001:
if cursorDoc in itog:
itog[cursorDoc]+=1
else:
itog[cursorDoc]=1
# Выведем результаты...
if len(itog)==0:
print('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ')
else:
itogList=[]
for cursorItog in itog.keys():
if itog[cursorItog]==kolWords:
itogList.append(cursorItog)
if len(itogList)>0.001:
print('Номера документов, которые содержат ВСЕ слова: ',itogList)
else:
print('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ')
Данные вводятся и выводятся как и в первом случае
Если что-то я упустил или найдеш ошибку в работе - пиши.
Если что-то непонятно - спрашивай.
Ладно.. я спать…
Удачи И в учебе И в бою!