猿问

cs50 pset6 可读性得到错误等级和负索引

谁能发现这个问题?每次我的索引都为负数,所以它总是打印“Before Grade 1”。我尝试做一些正则表达式,但我仍然不知道如何真正实现它


import re

from cs50 import get_string


words = 1

letters = 0

sentences = 0



st = get_string("Text: ")

t = len(st)

regex = r'\w+'

output = re.findall(regex,st)


for i in range(t):

    if st.isalpha():

        letters += 1

    if st.isspace():

        words += 1

    if st[i] == '.' or st[i] == '!' or st[i] == '?':

        sentences += 1


L = (letters / words * 100)

S = (sentences / words * 100)

index = 0.0588 * L - 0.296 * S - 15.8

roundedIndex = round(index)


if roundedIndex < 1:

    print("Before Grade 1")

if roundedIndex >= 16:

    print("Grade 16+")

else:

    print(roundedIndex)


米琪卡哇伊
浏览 109回答 1
1回答

慕妹3146593

在您的循环中,您正在检查整个字符串是按字母顺序排列还是空格,而不是与索引对应的字母是否i是。你可能想要st[i].isalpha()和st[i].isspace().或者,您可以直接遍历字符,而不是遍历索引:for char in st:&nbsp; &nbsp; if char.isalpha():&nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp; if char.isspace():&nbsp; &nbsp; &nbsp; &nbsp; ...
随时随地看视频慕课网APP

相关分类

Python
我要回答