[Tutor] Is my style OK in this elementary student exercise?

Alan Gauld alan.gauld at btinternet.com
Sat Jul 4 20:52:56 CEST 2009

"Angus Rodgers" <angusr at bigfoot.com> wrote

>  (i) trapping the exception StandardError may, for all I know,
> be a daft thing to do;

Not daft but not that common. Mainly because use of eval() 
is kind of frownedoon for security reasons. (See below.)

> (iv) correlatively with (iii), my indentation perhaps looks a
> little extreme (perhaps suggesting a redesign, I don't know);

You can miss out a few else clauses, especially after 
the try/excepts:

while get_bool("Continue?"): 
    try: key = eval(raw_input("Key value of type " + key_typ.__name__ + ": ")) 
    except StandardError: print "That's not a Python expression!" 

    if not isinstance(key, key_typ): 
       print "That's not a value of type", key_typ.__name__ else: # User has provided
    try: val = eval(raw_input("Object of type " + val_typ.__name__ + ": ")) 
    except StandardError: print "That's not a Python expression!" 

    if not isinstance(val, val_typ): 
       print "That's not an object of type", val_typ.__name__ 
    else: # User has provided an object of the correct type 
       ans[key] = val 
return ans

I'm hoping you know about the security issues around using 
eval with raw_input? The use can input any valid python code 
and it will be evaluated! For experimenting its OK but in 
live code it would be very risky.


Alan Gauld
Author of the Learn to Program web site
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20090704/42db1592/attachment-0001.htm>

More information about the Tutor mailing list