This could be an interesting error

Mark Lawrence breamoreboy at yahoo.co.uk
Sun Aug 31 17:38:12 EDT 2014


On 31/08/2014 22:02, Seymore4Head wrote:
> import math
> import random
> import sys
>
> ex='Hey buddy get away from the car'
> newex = ex.split()
> sentence=""
>
> print (newex)
> wait = input ("          Wait")
>
> def pigword(test):
>      for x in range(len(test)):

Please read up on how to use for loops as the above is usually a code smell.

>          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)

This is Python so please get rid of those unnecessary brackets.  Having 
done that assume that you have an empty test so your loop never gets 
entered, the local pigword never gets assigned before the return hence 
your UnboundLocalError.

>
> for x in range(len(newex)):

Ditto.

>      sentence = sentence + pigword(newex[x])+ " "
>      print (sentence)
>      wait = input ("          Wait")
>
> The program seems to work and it does work with everything I have
> tried so far.  The one exception is if you change "the" to "my" (in
> the first line) the program crashes.
>
>
> Traceback (most recent call last):
>    File "C:\Documents and
> Settings\Administrator\Desktop\Functions\test.py", line 25, in
> <module>
>      sentence = sentence + pigword(newex[x])+ " "
>    File "C:\Documents and
> Settings\Administrator\Desktop\Functions\test.py", line 22, in pigword
>      return (pigword)
> UnboundLocalError: local variable 'pigword' referenced before
> assignment
>>>>


-- 
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence




More information about the Python-list mailing list