неділю, 13 листопада 2011 р.

Відповідь на лист про гематрію

Доброї ночі!

Я у Вас вже була питала на парі про задачу з гематрією, але щось все одно в
мене не виходить... Подивіться, будь ласка, де помилка?
import nltk
state=nltk.corpus.state_union.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 gematria(state):
    for i in range(len(state)):
        word=state
        gem=0
        for i in word.lower():
            gem+=letter_vals[i]
        word=gem
        return word
for w in state:
    k=0
    if ([letter_vals[w] for w in state if w.isalpha() and w.islower() and
len(w)==3 and gematria(w)==555]):
    k+=1
    print k


__________________________________-


Перше - у восьмій лаб. роботі Ви вивчаєте, як зневаджувати програми. Потрібно цими знаннями скористатися і тоді....
Друге - у сьомій лаб. роботі Ви знайомилися з елементами стилю програмування. Але у своїй програмі у Вас state то список слів з корпуса то аргумент функції. Те саме з word.... 
Третє - В останньому циклі Ви перебираєте слова корпуса і далі стрічка:
 if ([letter_vals[w] for w in state if w.isalpha() and w.islower() and
len(w)==3 and gematria(w)==555]):
у якій перевіряєте все на купу, і довжину слова, і навіщось, чи є у letter_vals запис з ключем w(слово з корпуса) і так далі...
Порада - наведіть порядок зі змінними і тоді Вам буде простіше написати те що потрібно і зрозумієте де помилка 
Підказка - помилки у letter_vals[w] for w in state

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

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