from cs50 import get_string
letter=0
sentence=0
word=0
text = get_string("Text: ")
n = len(text)
for i in range(n):
if text[i].isalnum()==True:
letter=letter+1
for i in range(n):
if text[i].isspace()==True and text[i+1].isalnum()==True:
word=word+1
for i in range(n):
if text[i]=="?" or text[i]=="." or text[i]=="!":
sentence=sentence+1
grade = round (0.0588 * ((100 * letter) / word) - 0.296 * ((100 * sentence) / word) - 15.8)
if grade<1:
print("Before Grade 1")
elif grade < 16:
print(f"Grade {grade}")
else :
print("Grade 16+");https://submit.cs50.io/check50/d3897b249b2ca6ea937d023c25c1607af52ea5cd检查是错误的
也许我在其中做了错误的事情
发布于 2020-03-04 02:44:03
这里有几个问题:
第一个是在开头使用文本(顺便说一下,不是标准的) vs文本。这应该会对你有很大帮助。
第二个问题是您实际上并没有使用get_string方法。现在,这可能适用于您;我只是把它放到Juypter Notebook中,因为我想像使用REPL一样使用它。但是,假设没有,让我们简单介绍一下。
使用cs50安装Conda环境或pip,然后运行:

运行正常,没有错误。好的。现在,第一个块:
letter=0
sentence=0
word=0
Text = get_string("Text: ")这(因为我使用的是笔记本电脑)的计算结果是:
文本:无
现在,您可能要在cs50库中使用一些特定的东西,但我使用的是input --并将文本更改为小写。
但你走在正确的道路上。
发布于 2020-03-04 07:21:49
程序统计单词的方式有几个问题。它是通过计算空格来做到这一点的(好计划),但是
if text[i].isspace()==True and text[i+1].isalnum()==True:仅计算后跟a-z、A-Z或0-9的空格。在这种情况下,它不会计算"Alice“后面的空格,因此字数统计是错误的。认为爱丽丝“没有照片或对话?”
附注:在i循环中访问i + 1通常是一个非常糟糕的想法;当我达到最大值时,它将超出范围。它没有在测试中失败,因为没有测试的文本以空格结尾。如果希望看到它失败,请输入以空格结尾的文本。
发布于 2020-03-20 16:17:46
1)将单词初始化为1;2)添加以下内容以假定字母是任何小写/大写字符: for i in range(n):if texti.isalnum()或texti.isupper()或texti.islower() == True: letter = letter+1 3) Removed word count:== texti+1.isalnum()==True:
现在你的代码是10/10!
https://stackoverflow.com/questions/60510184
复制相似问题