Michael Lewis wrote: > I am trying to do a simple test but am not sure how to get around ASCII > conversion of characters. I want to pass in y have the function test to > see if y is an integer and print out a value if that integer satisfies the > if statement. However, if I pass in a string, it's converted to ASCII and > will still satisfy the if statement and print out value. How do I ensure > that a string is caught as a ValueError instead of being converted? > > def TestY(y): > try: > y = int(y) > except ValueError: > pass > if y < -1 or y > 1: > value = 82 > print value > else: > pass
You have to remember somehow whether you have an integer or a string. A straightforward way is def test(y): try: y = int(y) isint = True except ValueError: isint = False if isint and y < -1 or y > 1: print 82 However, Python's try..except statement features an else suite that is only invoked when no exception is raised. So the idiomatic way is to drop the helper variable and change the control flow instead: def test(y): try: y = int(y) except ValueError: pass else: if y < -1 or y > 1: print 82 _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor