This could be an interesting error
Seymore4Head
Seymore4Head at Hotmail.invalid
Sun Aug 31 20:04:28 EDT 2014
On Sun, 31 Aug 2014 16:10:27 -0600, Michael Torrie <torriem at gmail.com>
wrote:
>On 08/31/2014 03:02 PM, Seymore4Head wrote:
>> def pigword(test):
>> for x in range(len(test)):
>> if test[x] in "AEIOUaeiou":
>> stem = test [x:]
>> prefix = test [:x]
>> pigword = stem + prefix + "ay"
>> print ("Stem ",stem)
>> print ("Prefix",prefix)
>> print (pigword)
>> break
>> return (pigword)
>
>So, what do you think will happen if the word contains no vowels? Where
>is pigword defined?
>
>> for x in range(len(newex)):
>> sentence = sentence + pigword(newex[x])+ " "
>> print (sentence)
>> wait = input (" Wait")
>
>You don't need to iterate over range(len(blah)). The standard idiom
>when you need index as well as the item itself is to iterate over
>enumerate(). Or if you don't need the index, just iterate directly.
>You can iterate directly over the list, or the letters in the word,
>optionally getting an index. It's much cleaner and less error prone.
>Consider something like:
>
>def pigword(word):
> for x,letter in enumerate(word):
> # x is index (position), letter is the value at that index
> if letter in "AEIOUaeiou":
> ...
>
>for word in list_of_words:
> sentence = sentence + pigword(word) + " "
> ...
>
>That doesn't solve your little logic problem, though I think you can
>figure that part out easily!
>
I am still kind of shooting in the dark.
I wanted to try your example and it doesn't seem to work.
This is the latest version of changes I have made so the entire
program looks like this:
newex='Hey buddy get away from my car'
newex = newex.split()
sentence=""
print (newex)
wait = input (" Wait")
def pigword(test):
for x in range(len(test)):
if test[x] in "AEIOUYyaeiou":
stem = test [x:]
prefix = test [:x]
pigword = stem + prefix + "ay"
print ("Stem ",stem)
print ("Prefix",prefix)
print (pigword)
break
return (pigword)
for x in range(len(newex)):
sentence = sentence + pigword(newex[x])+ " "
print (sentence)
wait = input (" Wait")
Trying to use your example
>def pigword(word):
> for x,letter in enumerate(word):
> # x is index (position), letter is the value at that index
> if letter in "AEIOUaeiou":
BTW I added "AEIOUYyaeiou" y as a vowel.
I tried changing:
for x in range(len(test)):
to
for x in enumerate(test):
That causes an error to popup in a different place. I don't
understand why.
Traceback (most recent call last):
File "C:\Functions\piglatin.py", line 26, in <module>
sentence = sentence + pigword(newex[x])+ " "
File "C:\Functions\piglatin.py", line 15, in pigword
if test[x] in "AEIOUYyaeiou":
TypeError: string indices must be integers
Since you included:
>for word in list_of_words:
> sentence = sentence + pigword(word) + " "
I take it you anticipated a fault here. I don't understand why.
More information about the Python-list
mailing list