emile wrote: > On 03/13/2015 08:09 PM, Chris Angelico wrote: >> On Sat, Mar 14, 2015 at 1:33 PM, Paul Rubin <no.email@nospam.invalid> >> wrote: >>> emile <em...@fenx.com> writes: >>>> *** NameError: name 'val' is not defined >>>> (Pdb) l >>>> 139 try: >>>> 140 val = round(float(decval),1) >>>> 141 except: >>>> 142 import pdb; pdb.set_trace() >>> >>> If 'float' or 'round' throw an exception, the assignment to 'val' never >>> happens, so 'val' is undefined. Try examining the value of 'decval' in >>> the debugger to see what is making the conversion fail. >> >> That's exactly what the OP did :) Trouble is, it didn't help, because >> it sure looked as if decval was the string '4'. My best guess was - >> and is - that it's not just a string. We're looking at an SQL >> interface routine here, so it may be that there's a string subclass >> that length-limits itself, on the assumption that it's going into a >> fixed-length database field. > > It ran almost to completion before generating the error again -- > > (Pdb) decval > '4' > (Pdb) type(decval) > <type 'str'> > (Pdb) len(decval) > 1 > (Pdb) int(decval) > *** ValueError: invalid literal for int() with base 10: > '41.700000000000003' > > So there's still something amiss.
Why are you checking int(decval) when the actual failing expression is round(float(decval),1) ? Try to evaluate the latter in the debugger, and if that gives no clue change >>>> 139 try: >>>> 140 val = round(float(decval),1) >>>> 141 except: >>>> 142 import pdb; pdb.set_trace() to just val = round(float(decval), 1) to get a meaningful traceback and post that. -- https://mail.python.org/mailman/listinfo/python-list