【发布时间】:2021-06-18 11:10:18
【问题描述】:
可能这是完全愚蠢的事情,但我被困住了,可能需要社区的帮助。在 CS50 2021 第 6 周中,我们必须进行我们已经在 C 中进行的可读性计算。
任务:“编写 [...] 一个程序,该程序首先要求用户输入一些文本,然后根据 Coleman-Liau 公式输出文本的年级水平,与您完全一样在问题集 2 中做了,只是这次你的程序应该用 Python 编写。回想一下,Coleman-Liau 指数计算为 0.0588 * L - 0.296 * S - 15.8,其中 L 是每 100 个单词的平均字母数文本,S 是文本中每 100 个单词的平均句子数。”
应该是这样的:
文字:恭喜!今天是你的好日子。你要去伟大的地方!你已经离开了!
三年级
不幸的是,我的代码改为抛出 11 年级,我真的再也看不到错误了。
怎么了?
from cs50 import get_string
import re
# ask user for input
text = get_string("Text: ")
# get informations out of text
number_letters = 0
for i in range(len(text)):
if text[i].isalpha():
number_letters += 1
number_words = len(text.split())
number_sentences = len(re.split(r'[.!?]', text))-1
# calculate index
L = number_letters * (100 / number_words)
S = number_sentences * (100 / number_words)
index = round(0.0588 * L - 0.296 * S - 15.8)
index2 = 0.0588 * (100 * float(number_letters) / float(number_words)) - 0.296 * (100 * float(number_sentences) / float(number_words)) - 15.8
print("index2:", index2)
#print("Index", index)
print("Letters:", number_letters)
print("Words:", number_words)
print("Sentence:", number_sentences)
# print grades
if index >= 16:
grade = "Grade 16+"
elif index <= 1:
grade = "Before Grade 1"
else:
grade = f"Grade {index}"
print(grade)
【问题讨论】:
-
您确定 3 是
Congratulations! Today is your day. You're off to Great Places!输入的预期成绩吗?我已将此文本放在“Coleman-Liau index online”的第一个 Google 结果中,它告诉我索引是13.6,这与您的计算相当。我仔细检查了你的代码,看起来不错。 -
是的。真奇怪。以下是一些输入: 输入:“在我年轻和脆弱的岁月里,我父亲给了我一些建议,从那以后我一直在脑海中反复思考......”