from cs50 import get_string s = get_string("Text: ") letter = 0 i = 0 word = 1 sent = 0 while s[i] != None: if s[i] == ' ': word = word + 1 i = i + 1 elif (s[i].isalpha()): letter = letter + 1 i = i + 1 elif s[i] == "." or s[i] == "!" or s[i] == "?": sent = sent + 1 i = i + 1 else: i = i + 1 grade = 0.0588 * (100 * letter / word) - 0.296 * (100 * sent / word) - 15.8 if grade < 16 and grade >= 0: print("Grade", round(grade)) elif grade >= 16: print("Grade 16+") else: print("Before Grade 1")
I think you are expecting to eventually find a NULL character at the end of the string the way you would have in C but Python has an actual string datatype and it'll only let you iterate over the actual characters it contains.
The error in your example occurs when i reaches 40 after running the logic on the final period in your string. s doesn't exist hence the error.
Python let's you find a string's length easily with the len() function. Changing the while condition to the below resolves the error.
while i < len(s)