I want to create a code that prints words in uppercase (after "G") from a sentence
# [] create words after "G"
# sample quote "Wheresoever you go, go with all your heart" ~ Confucius (551 BC - 479 BC)
# Sample output:
WHERESOEVER
YOU
WITH
YOUR
HEART
here is my code
q = input ("Quote : ")
word = ""
for a in q :
if a.isalpha() == True :
word = word + a
elif word[0].lower() > "g" :
print (word.upper())
word = ""
else :
word = ""
it runs well until the last word of the sentence, it can't print the words although the first letter is after "G". Also, when it found punctuation, it stuck, and says
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-45-29b3e8e00230> in <module>()
8 if a.isalpha() == True :
9 word = word + a
---> 10 elif word[0].lower() > "g" :
11 print (word.upper())
12 word = ""
IndexError: string index out of range
I'm suspicious it has something whether with the .isalpha
or the elif
I need to know how to fix it and where do I made mistakes
If you have two characters in succession that are not letters (such as a comma followed by a space), then you will hit
elif word[0].lower() > "g"
whenword
is the empty string, so there will be no character atword[0]
. That is what causes the exception.Simplistically, you could avoid this by checking
word
isn't empty before you try and getword[0]
.That at least should avoid the exception.
You only print when you hit a non-alphabetic character. So if you pass a word and then don't hit a non-alphabetic character, then the last word will not be printed.
To solve that, you can add a
print
after the end of your loop, in case there is a final word still to be printed.