[Tutor] exceptions

Brian van den Broek bvande at po-box.mcgill.ca
Sat Apr 16 07:14:16 CEST 2005

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()
>             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?

And, while I'm writing, I'd suggest rewriting your lines like:

message = str(self.guess) + " is the correct number!"

in this form instead:

message = "%s is the correct number!" %self.guess

The almost irrelevant benefit is that it is faster. The big plus is 
string formatting is so handy, that I think it helps a lot to get used 
to using it in most cases, even those that are easy to handle with 
string concatenation as you have done.


Brian vdB

More information about the Tutor mailing list