SSparks
SSparks

Reputation: 25

Python - Every other letter in a string capitalized within a loop where the data was handed down from a copied list of user input

I was instructed to have a user input at least 8 words into a list and then perform various manipulations to the data within the list. One of the manipulations it asks me to do is to create a loop that makes every other letter in the strings capitalized (hElLo WoRlD.) For better readability, I left out the other manipulations that I have done to the code.

import sys
def main():
    words = []
    wordCount = 0
    userWord = input("Enter at least 8 words or 'bye' to leave the program: ").split(' ')
    while True:
        if len(userWord)<8:
            print("Please print at least 8 words, try again.")
            sys.exit()
        elif wordCount >= 8 and userWord[wordCount] != 'bye':
            words.append(userWord[wordCount])
            wordCount = wordCount + 1
        else:
            break
     every_other (userWord)
def every_other(words):
    words6 = words.copy()
    st = ""
    for i in range(len(words6)):
        if (i%2) == 0:
            st += words6[i].upper()
        else:
            st += words6[i]
     print ('This is your list with every other letter capitalized: ', words6)
     return st
main()

I am not getting any error messages but the code doesn't seem to be running starting at def every_other.

Upvotes: 0

Views: 310

Answers (1)

temp123
temp123

Reputation: 382

You'll have to print the function every_other as it returns a string:

import sys
def main():
    words = []
    wordCount = 0
    userWord = input("Enter at least 8 words or 'bye' to leave the program: ").split(' ')
    while True:
        if len(userWord)<8:
            print("Please print at least 8 words, try again.")
            sys.exit()
        elif wordCount >= 8 and userWord[wordCount] != 'bye':
            words.append(userWord[wordCount])
            wordCount = wordCount + 1
        else:
            break
    print('This is your list with every other letter capitalized: ', every_other(userWord))
def every_other(words):
    words6 = words.copy()
    st = ""
    for i in range(len(words6)):
        if (i%2) == 0:
            st += words6[i].upper()
        else:
            st += words6[i]
    return st
    #print ('This is your list with every other letter capitalized: ', words6) # This will never run as the function has already returned
main()

If you want to capitalize every second character:

import sys
def main():
    words = []
    wordCount = 0
    userWord = input("Enter at least 8 words or 'bye' to leave the program: ").split(' ')
    while True:
        if len(userWord)<8:
            print("Please print at least 8 words, try again.")
            sys.exit()
        elif wordCount >= 8 and userWord[wordCount] != 'bye':
            words.append(userWord[wordCount])
            wordCount = wordCount + 1
        else:
            break

    print('This is your list with every other letter capitalized: ', every_other(userWord))


def every_other(words):
    st = ""
    new_st = ""
    for w in words:
        st+=w
    print(str(st))
    for count, val in enumerate(st):
        if (count % 2) == 0:
            val = val.upper()

        new_st+=val
    return new_st

main()

Upvotes: 1

Related Questions