随着年龄增长,我们能读懂的文本也越来越复杂。但一段文本的复杂度到底是怎么评估的?我们又该如何编写程序来完成这件事?在这个练习中,你将编写一个程序,用来判断一段文本有多难读懂,以及它最适合哪个年龄段的人阅读。
我们将使用自动可读性指数(ARI)公式来计算文本的复杂度。ARI 于 1967 年提出,用来评估读懂一段文本所需的美国年级水平。它通过衡量单词和句子的复杂度来做到这一点。复杂度以每个单词的字符数和每个句子的单词数来衡量。数值越高,文本越复杂。
你的程序应显示文本的前三个句子,但每个句子最多 50 个字符。如果某个句子超过 50 个字符,只打印前 50 个字符,后面再加上省略号(...)。如果文本包含三个以上的句子,第四行只输出一个省略号。
假设有一个名为“ari.txt”的文件,内容如下(下面所有示例都会用到这段文本):
ARI was designed for military use in 1967. It was for real-time monitoring of readability on typewriters. It offered an automated counting method. It has similar results to other frameworks. This validates its accuracy.
那么程序应打印:
The text is:
ARI was designed for military use in 1967.
It was for real-time monitoring of readability on ...
It offered an automated counting method.
...
程序应计算并打印文本中的字符数、单词数和句子数。句子可以以句号、感叹号或问号结尾。空白字符用来分隔句子中的单词。统计每个单词的字符数时,要计入所有非空白字符,包括标点符号。请在文本预览之后打印这些统计信息,中间用一个空行隔开。
下面是一个仅包含文本统计部分的示例输出:
Words: 34
Sentences: 5
Characters: 186
有了这些关于文本的信息,我们就可以用下面的公式计算它的复杂度:
score = 4.71 * chars / words + 0.5 * words / sentences - 21.43
程序应计算并打印分数,以及读懂这段文本大致需要的年龄。
| 分数 | 年龄 | 年级 |
|---|---|---|
| 1 | 5-6 | 幼儿园 |
| 2 | 6-7 | 一年级 |
| 3 | 7-8 | 二年级 |
| 4 | 8-9 | 三年级 |
| 5 | 9-10 | 四年级 |
| 6 | 10-11 | 五年级 |
| 7 | 11-12 | 六年级 |
| 8 | 12-13 | 七年级 |
| 9 | 13-14 | 八年级 |
| 10 | 14-15 | 九年级 |
| 11 | 15-16 | 十年级 |
| 12 | 16-17 | 十一年级 |
| 13 | 17-18 | 十二年级 |
| 14 | 18-22 | 大学生 |
分数应保留小数点后两位。用它来查找年龄或年级时,分数应四舍五入到最接近的整数,且上限为 14。下面是程序的示例输出:
The text is:
ARI was designed for military use in 1967.
It was for real-time monitoring of readability on ...
It offered an automated counting method.
...
Words: 34
Sentences: 5
Characters: 186
Score: 7.74
This text should be understood by 12-13 year-olds.