You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50可读性Python程序:非1级及16+等级计算错误求助

CS50可读性计算代码修正方案

你的代码有两个关键错误,导致中间等级计算全部出错,修正方法很简单:

错误1:单词计数逻辑错误

原代码通过统计空格数来计算单词数,但最后一个单词后面没有空格,所以实际单词数应该是空格数 + 1。比如输入"Hello world",空格数是1,单词数是2,原代码会错误地算成1,直接导致L(每100单词的字母数)和S(每100单词的句子数)的计算值偏差。

错误2:等级计算未做四舍五入

Coleman-Liau指数要求将计算结果四舍五入到最近的整数,但原代码用int()直接截断小数部分,比如结果是10.8会被当成10,导致等级偏低;结果是10.1也会被当成10,不符合算法要求。


修正后的完整代码

import cs50

text = cs50.get_string("Text: ")

letters = 0
words = 1  # 初始化为1,因为至少有一个单词
sentences = 0

for char in text:
    if char.isalpha():
        letters += 1
    if char.isspace():
        words += 1
    if char in [".", "!", "?"]:
        sentences += 1

# 计算每100单词的字母数和句子数
L = (letters * 100.0) / words
S = (sentences * 100.0) / words

# 使用round()四舍五入到最近整数
grade = round(0.0588 * L - 0.296 * S - 15.8)

if grade < 1:
    print("Before Grade 1")
elif grade > 16:
    print("Grade 16+")
else:
    print(f"Grade {grade}")

验证说明

用CS50官方样例测试:

输入:"One fish. Two fish. Red fish. Blue fish." → 输出应为 Grade 2
输入:"Would you like them here or there? I would not like them here or there. I would not like them anywhere." → 输出应为 Grade 5

内容的提问来源于stack exchange,提问作者Wajahat Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:16:02