Flubbed it in the second interation through the string: range error... HOW?

Thomas Passin list1 at tompassin.net
Wed May 29 01:14:07 EDT 2024


Your code is unreadable. The lines have all run together.  And after 
that, kindly explain what you want your code sample to do.  "Process" 
doesn't say much.

 From what I can make out about what you are trying to do, you would do 
better to index through your string with

for i, chr in enumerate(name):
     # do something with the character

Also, it's 2024 ... time to start using f-strings (because they are more 
readable than str.format())

On 5/29/2024 12:33 AM, Kevin M. Wilson via Python-list wrote:
> The following is my effort to understand how to process a string, letter, by letter:
> def myfunc(name):        index = 0    howmax = len(name)    # while (index <= howmax):    while (index < howmax):        if (index % 2 == 0):            print('letter to upper = {}, index {}!'.format(name[index], index))            name = name[index].upper()            print('if block {} and index {}'.format(name[index], index))        elif (index % 2 > 0):            print(index)            print('Start: elseif block, index is {}, letter is {}'.format(index, name))            # print('letter to lower = {}'.format(name[index]))            # print('Already lowercase do noting: name = {}'.format(name[index]))        index += 1        # index = name.upper()
>      return name
> myfunc('capitalism')
> Error message:                        Not making sense, index is 1, letter s/b 'a'letter to upper = c, index 0!
> if block C and index 0
> 1
> Start: elseif block, index is 1, letter is C
> ---------------------------------------------------------------------------
> IndexError                                Traceback (most recent call last)
> Cell In[27], line 21
>       17         # index = name.upper()
>       19     return name
> ---> 21 myfunc('capitalism')
> 
> Cell In[27], line 8, in myfunc(name)
>        6 while (index < howmax):
>        7     if (index % 2 == 0):
> ----> 8         print('letter to upper = {}, index {}!'.format(name[index], index))
>        9         name = name[index].upper()
>       10         print('if block {} and index {}'.format(name[index], index))
> 
> IndexError: string index out of range***************************************************
> So, I'm doing something... Stupid!!
> ***************************************************
> "When you pass through the waters, I will be with you: and when you pass through the rivers, they will not sweep over you. When you walk through the fire, you will not be burned: the flames will not set you ablaze."
> Isaiah 43:2



More information about the Python-list mailing list