Определение функции для чтения из файла и подсчета количества слов в каждой строке - PullRequest
0 голосов
/ 23 февраля 2020

Я довольно новичок в python. Я пытаюсь определить функцию для чтения из заданного файла, подсчитать количество слов в каждой строке и вывести результат в виде списка.

Вот мой код:

def nWs(filename):

with open(filename,'r') as f:
    k=[]
    for line in f:
        num_words=0
        words=line.split()
        num_words +=len(words)
        k.append(num_words)
    print (k)
print( nWs('random_file.txt') )

Ожидаемый результат примерно такой:

[1, 22, 15, 10, 11, 13, 10, 10, 6, 0]

Но он возвращает:

[1, 22, 15, 10, 11, 13, 10, 10, 6, 0]
None

Я не понимаю, почему возвращается этот термин None. Там нет ничего плохого в текстовом файле, это просто случайный текст, и я только пытаюсь напечатать слова в 1 файле. Так что я не понимаю этот результат. Кто-нибудь может объяснить почему? А также как я могу избавиться от этого None термина.

1 Ответ

0 голосов
/ 23 февраля 2020

Я предполагаю, что отступ корректен, когда вы пытаетесь запустить его, иначе он не запустится.

None - это результат вызова вами функции в операторе печати. Поскольку nWs ничего не возвращает, оператор print печатает None. Вы можете вызвать функцию без оператора print или вместо использования print в функции, использовать return и затем print.

def nWs(filename):

    with open(filename,'r') as f:
        k=[]
        for line in f:
            num_words=0
            words=line.split()
            num_words +=len(words)
            k.append(num_words)
        print (k)

nWs('random_file.txt')

или

def nWs(filename):

    with open(filename,'r') as f:
        k=[]
        for line in f:
            num_words=0
            words=line.split()
            num_words +=len(words)
            k.append(num_words)
        return k

print(nWs('random_file.txt'))
...