Простая программа проверки правописания ввода / вывода Python-файла - PullRequest
0 голосов
/ 05 мая 2019

Для класса я должен создать простую программу проверки орфографии, которая принимает два файла в качестве входных данных, один из которых содержит слова с правильной написанием, а другой - параграф с несколькими словами с ошибками. Я думал, что понял это, но я получаю ошибку, которую я никогда не видел прежде. Когда программа завершает работу, выдает ошибку:

<function check_words at 0x7f99ba6c60d0>

Я никогда не видел этого, и я не знаю, что это значит, любая помощь в работе этой программы будет принята с благодарностью. Код программы ниже:

import os
def main():
    while True:
        dpath = input("Please enter the path to your dictionary:")
        fpath = input("Please enter the path to the file to spell check:")
        d = os.path.isfile(dpath)
        f = os.path.isfile(fpath)

        if d == True and f == True:
            check_words(dpath, fpath)
            break

    print("The following words were misspelled:")
    print(check_words)

def linecheck(word, dlist):
    if word in dlist:
        return None
    else:
        return word

def check_words(dictionary, file_to_check):
    d = dictionary
    f = file_to_check
    dlist = {}  
    wrong = []  


    with open(d, 'r') as c:
        for line in c:
            (key) = line.strip()
            dlist[key] = ''

    with open(f, 'r') as i:
        for line in i:
            line = line.strip()
            fun = linecheck(line, dlist)
            if fun is not None:
                wrong.append(fun)

    return wrong

if __name__ == '__main__':
    main()

Ответы [ 2 ]

3 голосов
/ 05 мая 2019

Это не ошибка, он делает именно то, что вы говорите.

Эта строка:

print(check_words)

Вы говорите ему напечатать функцию. Вывод, который вы видите, - это просто вывод на Python названия функции и ее адреса: «печать функции».

2 голосов
/ 05 мая 2019

Да, не делай print(check_words), делай print(check_words())

Кроме того, измените check_words(dpath, fpath) на misspelled_words = check_words(dpath, fpath)

И изменить print(check_words) на print(misspelled_words)

Итоговый код (с некоторыми изменениями):

import os
def main():
    while True:
        dpath = input("Please enter the path to your dictionary: ")
        fpath = input("Please enter the path to the file to spell check: ")
        d = os.path.isfile(dpath)
        f = os.path.isfile(fpath)

        if d == True and f == True:
            misspelled_words = check_words(dpath, fpath)
            break

    print("\nThe following words were misspelled:\n----------")
    #print(misspelled_words) #comment out this line if you are using the code below

    #optional, if you want a better looking output

    for word in misspelled_words:   # erase these lines if you don't want to use them
        print(word)                 # erase these lines if you don't want to use them

    #------------------------ 


def linecheck(word, dlist):
    if word in dlist:
        return None
    else:
        return word

def check_words(dictionary, file_to_check):
    d = dictionary
    f = file_to_check
    dlist = {}  
    wrong = []  


    with open(d, 'r') as c:
        for line in c:
            (key) = line.strip()
            dlist[key] = ''

    with open(f, 'r') as i:
        for line in i:
            line = line.strip()
            fun = linecheck(line, dlist)
            if fun is not None:
                wrong.append(fun)

    return wrong

if __name__ == '__main__':
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...