Ryan Ackerman
Ryan Ackerman

Reputation: 27

Siimple Python. Not sure why my program is outputting this

I am making a program to take in a sentence, convert each word to pig latin, and then spit it back out as a sentence. I have no idea where I have messed up. I input a sentence and run it and it says

built-in method lower of str object at 0x03547D40

s = input("Input an English sentence: ")
s = s[:-1]
string = s.lower

vStr = ("a","e","i","o","u")



def findFirstVowel(word):
    for index in range(len(word)):
        if word[index] in vStr:
            return index
    return -1

def translateWord():       
        if(vowel == -1) or (vowel == 0):
           end = (word + "ay")

        else:
            end = (word[vowel:] + word[:vowel]+ "ay")


def pigLatinTranslator(string):
    for word in string:
        vowel = findFirstVowel(word)
        translateWord(vowel)

    return


print (string) 

Upvotes: 3

Views: 1423

Answers (2)

kmario23
kmario23

Reputation: 61455

Here is the corrected version of the code which should work:

s = input("Input an English sentence: \n").strip()
string = s.lower() #lowercasing

vStr = ("a","e","i","o","u")

def findFirstVowel(word):
    for idx,chr in enumerate(word):
        if chr in vStr:
            return idx
    return -1

def translateWord(vowel, word):       
        if(vowel == -1) or (vowel == 0):
           end = (word + "ay")

        else:
            end = (word[vowel:] + word[:vowel]+ "ay")

def pigLatinTranslator(string):
    for word in string:
        vowel = findFirstVowel(word)
        translateWord(vowel,word)

    return

print(string)

Upvotes: 0

Abdoul Guisset
Abdoul Guisset

Reputation: 61

You have used the lower method incorrectly. You should use it like this string = s.lower().

The parentheses change everything. When you don't use it, Python returns an object.

Built-in function should always use ()

Upvotes: 2

Related Questions