[Tutor] Re: Eceptions

Brian van den Broek bvande at po-box.mcgill.ca
Sun Apr 17 19:09:57 CEST 2005


Diana Hawksworth said unto the world upon 2005-04-16 17:39:

<SNIP>

>>    > Diana Hawksworth said unto the world upon 2005-04-15 22:25:
>>    > > Hello list,
>>    > >
>>    > > I have been trying to trap a string entry by raising an exception.
> 
> The
> 
>>    code follows - but the exception is never raised.  What am I doing
> 
> wrong?
> 
>>    > >
>>    > > TIA Diana
>>    > >
>>    > >  try:
>>    > >
>>    > >             self.guess = int(self.num_ent.get())
>>    > >
>>    > >             self.num_ent.delete(0,END)
>>    > >             self.num_ent.focus_set()
>>    > >
>>    > >
>>
>>- Ignored:
>>    > >             if self.guess < self.number:
>>    > >                 message = str(self.guess) + " is too low. You need
> 
> to
> 
>>    guess higher"
>>    > >
>>    > >             if self.guess > self.number:
>>    > >                 message = str(self.guess) + " is too high. You
> 
> need to
> 
>>    guess lower"
>>    > >
>>    > >             if self.guess == self.number:
>>    > >                 message = str(self.guess) + " is the correct
> 
> number!"
> 
>>    > >                 self.message_txt.config(state = NORMAL)
>>    > >                 self.message_txt.config(state = DISABLED)
>>    > >
>>    > >             self.message_txt.config(state = NORMAL)
>>    > >             self.message_txt.delete(0.0, END)
>>    > >             self.message_txt.insert(0.0, message)
>>    > >             self.message_txt.config(state = DISABLED)
>>    > >
>>    > >
>>    > >  except(ValueError):
>>    > >          message = str(self.guess) + " is not a number. Please try
>>    again!"
>>    > >
>>    >
>>    > Hi Dianna,
>>    >
>>    > What are you expecting to raise the ValueError? It looks to me like
> 
> it
> 
>>    > must be the line:
>>    >
>>    > self.guess = int(self.num_ent.get())
>>    >
>>    > But, if that is so, then the assignment to message in your except
>>    > clause won't work, as self.guess won't have been assigned.
>>    >
>>    > I'm no expert, so I may be missing something, but I wouldn't be
>>    > surprised if your num_ent.get() has details that are pertinent. What
>>    > does that method return?
>>    >

<SNIP my suggestion to use string formatting>

>>    >
>>    > Best,
>>    >
>>    > Brian vdB
>>    >
>>    >
>>    Thanks for your reply Brian.  The num_ent.get() method returns a
> 
> number.
> 
>>    Actually, it is an Entry box that returns a string, that I then
> 
> convert to
> 
>>    an integer.  What I would like to do, is, if a user enters a string,
> 
> to have
> 
>>    the program return an exception. At the moment it just blithely
> 
> carries on
> 
>>    as if the string that was entered was in fact an integer, and compares
> 
> that
> 
>>    entered string to a random number!


Hi Diana,

hm, our mail clients between them appear to have made a mess of the 
quoting :-(  This makes it a bit harder to parse the code, but let's try.

I'm still not 100% clear on the role of

self.guess = int(self.num_ent.get())

in your code. Does self.num_ent.get() return a string or an integer? 
Perhaps I'm misreading, but you seem to say both. Your second comment 
is that "it is an Entry box that returns a string" -- I assume you 
mean that at some point it calls the raw_input function, right?

What happens if you enter something like "I am not a number!" at that 
point in the run of self.num_ent.get? If self.num_ent.get() really 
just returns a string, then I'd expect roughly the same thing as what 
happens below:

 >>> my_input = raw_input("Well?\n")
Well?
I am not a number!
 >>> int(my_input)

Traceback (most recent call last):
   File "<pyshell#2>", line 1, in -toplevel-
     int(my_input)
ValueError: invalid literal for int(): I am not a number!
 >>>

I think it would help if you posted the code for the num_ent.get 
method. Otherwise, I at least, am out of stuff to say :-)
(If you post again, please delete the goofy-formatted code quote 
above, and replace with a new copy-paste from your source.)

>>
>>    Thanks for the hint on string formatting!  I had forgotten about that!
> 
> Been doing
> 
>>    this for a month only!!!
>>
>>    Thanks again. Diana


Your welcome. There is a lot to keep in one's head at the beginning, 
isn't there? My money is on the claim that string formatting is a good 
habit to get into early.

Best,

Brian vdB



More information about the Tutor mailing list