понеділок, 31 жовтня 2016 р.

Задача №11 Лаб. робота №8

Умова задачі: Гематрія – метод виявлення прихованого змісту слів на основі порівняння чисел, які відповідають словам. Слова з однаковими числами мають однаковий зміст. Число слова визначається сумуванням чисел, як відповідають його літерам. Написати функцію decode() для обробки тексту, яка випадковим чином замінює слова на їх Гематрія-еквіваленти. Чи вдалося виявити "прихований зміст" тексту? (Використовувати letter_vals з попередньої задачі).

Аналіз задачі. Функція decode() повинна приймати один аргумент текст, який повинен бути списком слів або якщо текст стрічка то його потрібно буде перетворити у список. Слова з тексту повинні переглядатися одне за одним і для слова визначається його гематрія (число). Серед довільного списку слів вибираються слова які мають таке саме значення гематрії і серед них на екран виводиться випадково вибране слово.
# -*- coding: utf-8 -*-
# імпортуємо все що буде потрібно
import nltk
import random
# слова для заміни будемо брати з корпуса слів
from nltk.corpus.words import words
letter_vals = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':80, 'g':3, 'h':8,'i':10, 'j':10, 'k':20, 'l':30, 'm':40, 'n':50, 'o':70, 'p':80, 'q':100, 'r':200, 's':300, 't':400, 'u':6, 'v':6, 'w':800, 'x':60, 'y':10, 'z':7}
def gematr(word):
"""Функція для визначення значення гематрії довільного слова (стрічки символів)
"""
assert isinstance(word, basestring), "argument to gematr() must be a string"
return sum([letter_vals[char] for char in word.lower()])
def decode(text):
"""Функція для заміни слів їх гематрія еквівалентами
"""
assert isinstance(word, basestring), "argument to decode() must be a string"
words_for_choice=words.words()
for word in text.split():
if word.isalpha():
print word, random.choice([w for w in words_for_choice if gematr(w)==gematr(word)])
else:
print word
>>> decode('I love Sveta')
I ade
love Julien
Sveta irrenderable
view raw d.py hosted with ❤ by GitHub

Немає коментарів:

Дописати коментар