Условие зашифровки изначального слова: каждая буква изначального слова кодируется буквой, которая стоит на 3 позиции вперед по алфавиту (от начала алфавита к концу). В то же время зашифрованное слово, чтобы раскодировать в изначальное слово - нужно каждую букву зашифрованного слова заменить на букву, которая стоит на 3 позиции назад по алфавиту (от конца алфавита к началу).
Для расшифровки представлена картинка.
Рассмотрим простой пример прежде, чем решать эту задачу.
Изначальная буква: А
Значит зашифрованная буква (+3 позиции вперёд по алфавиту): Г
(А (+1) = Б (+1) = В (+1) = Г)
Сделаем наоборот.
Зашифрованная буква: З
Значит изначальная буква (-3 позиции назад по алфавиту): Е
(З (-1) = Ж (-1) = Ё (-1) = Е)
Вывод:
- чтобы зашифрованное слово превратить в изначальное - мы смещаемся на 3 позиции назад по алфавиту.
- чтобы закодировать изначальное слово в зашифрованное - мы смещаемся на 3 позиции вперёд по алфавиту.
wordCount = int(input("Enter words pairs count:\n"))
wDict = readWordPairs(wordCount)
while True:
word = input("Enter word: ")
if word.lower() == "exit": break
print(f"Synonim: {wDict[word]}" if word in wDict.keys() else "Not found")
input("press any key to close program")
if __name__ == "__main__":
main()
Объяснение:
Если есть вопросы - не стесняйтесь задать в комментариях к ответу. Ошибок, которые вы описали в задании, в данном случае не наблюдается. Единственное, я сделал так, что бы программа не завершалась после первого найденного слова, а запрашивала слова до тех пор, пока пользователь не введёт команду exit
Зашифрованное слово: ТЛУГПЛЖГ
Изначальное слово: <неизвестно>
Условие зашифровки изначального слова: каждая буква изначального слова кодируется буквой, которая стоит на 3 позиции вперед по алфавиту (от начала алфавита к концу). В то же время зашифрованное слово, чтобы раскодировать в изначальное слово - нужно каждую букву зашифрованного слова заменить на букву, которая стоит на 3 позиции назад по алфавиту (от конца алфавита к началу).
Для расшифровки представлена картинка.
Рассмотрим простой пример прежде, чем решать эту задачу.
Изначальная буква: А
Значит зашифрованная буква (+3 позиции вперёд по алфавиту): Г
(А (+1) = Б (+1) = В (+1) = Г)
Сделаем наоборот.
Зашифрованная буква: З
Значит изначальная буква (-3 позиции назад по алфавиту): Е
(З (-1) = Ж (-1) = Ё (-1) = Е)
Вывод:
- чтобы зашифрованное слово превратить в изначальное - мы смещаемся на 3 позиции назад по алфавиту.
- чтобы закодировать изначальное слово в зашифрованное - мы смещаемся на 3 позиции вперёд по алфавиту.
Теперь расшифруем изначальное слово:
Зашифрованное слово: ТЛУГПЛЖГ
Т (-3 позиции): Т (-1) = С (-1) = Р (-1) = П
Л (-3 позиции): Л (-1) = К (-1) = Й (-1) = И
У (-3 позиции): У (-1) = Т (-1) = С (-1) = Р
Г (-3 позиции): Г (-1) = В (-1) = Б (-1) = А
П (-3 позиции): П (-1) = О (-1) = Н (-1) = М
Л (-3 позиции): Л (-1) = К (-1) = Й (-1) = И
Ж (-3 позиции): Ж (-1) = Ё (-1) = Е (-1) = Д
Г (-3 позиции): Г (-1) = В (-1) = Б (-1) = А
Изначальное слово: ПИРАМИДА
ответ: ПИРАМИДА
Исходный код (Python 3.8 x64):
class InvalidArgumentException(Exception): pass
class KeyValuePair:
def __init__(self, key, value):
self._key = key
self._value = value
@staticmethod
def FromList(pair: list):
if (len(pair) != 2): raise InvalidArgumentException("List must contain strictly 2 elements for initialize KeyValuePair")
return KeyValuePair(pair[0], pair[1])
@property
def Key(self):
return self._key
@property
def Value(self):
return self._value
def strip(string: str):
return string.strip()
def readWordPairs(wordCount: int, pairSeparator: str = "-") -> dict:
temp = dict()
for i in range(wordCount):
wordPair = KeyValuePair.FromList(list(map(strip, input(f'{i} pair: ').lower().split(pairSeparator
if wordPair.Key in temp.keys():
temp[wordPair.Key] = [temp[wordPair.Key], wordPair.Value]
else:
temp[wordPair.Key] = wordPair.Value
return temp
def main():
wordCount = int(input("Enter words pairs count:\n"))
wDict = readWordPairs(wordCount)
while True:
word = input("Enter word: ")
if word.lower() == "exit": break
print(f"Synonim: {wDict[word]}" if word in wDict.keys() else "Not found")
input("press any key to close program")
if __name__ == "__main__":
main()
Объяснение:
Если есть вопросы - не стесняйтесь задать в комментариях к ответу. Ошибок, которые вы описали в задании, в данном случае не наблюдается. Единственное, я сделал так, что бы программа не завершалась после первого найденного слова, а запрашивала слова до тех пор, пока пользователь не введёт команду exit