On Thu, Feb 4, 2010 at 1:21 PM, Serdar Tumgoren <zstumgo...@gmail.com> wrote: >> Perhaps the code on activestate is not a correct copy of what you are >> running? The conditional at line 23 extends all the way to line 35 - >> the end of the function - so if value % 100/10 == 1 no more code is >> executed and None is returned. >> > > Here is the code that I'm running locally (hopefully the formatting > doesn't get screwed up): > > def ordinal(value): > """ > Converts an integer to it's ordinal as a string. > For example 1 to "1st", 2 to "2nd", 3 to "3rd", etc. > """ > try: > value = int(value) > except ValueError: > return value > > if value % 100/10 <> 1: > if value % 10 == 1: > ord = u"%d%s" % (value, "st") > return ord > elif value % 10 == 2: > ord = u"%d%s" % (value, "nd") > return ord > elif value % 10 == 3: > ord = u"%d%s" % (value, "rd") > return ord > else: > ord = u"%d%s" % (value, "th") > return ord > else: > ord = u"%d%s" % (value, "th") > return ord > Geez -- I think I found the (now-obvious) mistake. If you compare the above to the ActiveState recipe, it's obvious that I forgot to copy over the final, outer "else:" clause.
Could you all indulge me one last time and tell me if the above version works for you? If so, I'll update the recipe to spare others a similar headache. And yes, I get the idiot award for the day... Regards, Serdar _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor