On 03/14/2015 09:08 AM, Peter Otten wrote:
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)


because it sure smells like int should work:

(Pdb) "3"<decval<"5"
True



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.

I don't get a traceback -- it spews:

Fatal Python error: deletion of interned string failed

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

then crashes and I get a Microsoft pop-up that says python.exe has encountered a problem and needs to close.

Emile




--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to