Среднее слово в предложении - PullRequest
0 голосов
/ 22 апреля 2020

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

ZeroDivisionError: division by zero

Вот мой код:

for line2 in csv:
    total_lines += 1
    total_words = len(line2.split())
    line_duplicate.append("Line %d has %d words" % (total_lines, total_words))
    sentence_count = len([char for char in line2 if char in sentence])
    line_duplicate.append("Line %d has %d Sentence/s" % (total_lines, sentence_count))                          
    avg =  total_words/sentence_count
    line_duplicate.append("Line %d has %d Average word per sentence/s" % (total_lines, avg))

1 Ответ

1 голос
/ 22 апреля 2020

Итак, ваша проблема в этой строке:

sentence_count = len([char for char in line2 if char in sentence])

Это логическая ошибка, вы хотите посчитать число . в строке, которую вы, но это понимание списка просто проверяет слова в line2 против вашего предложения . Так как ни одно слово не будет совпадать с ., таким образом, фразе_счет становится 0. Позже в коде вы делите его на total_words , поэтому он выдает ZeroDivisionError

В действительности вам нужно проверить каждый отдельный символ в line2 относительно вашей переменной line2 . Замените его следующим:

sentence_count = len([char for word in line2 for char in word if char in sentence])

Если вы просто хотите посчитать число . в line2 и сохранить его в termin__ount , вы можете просто используйте line2.count('.'), больше pythoni c. Итак, вы над линией сведете к этому:

sentence_count = line2.count('.')
...