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