'@'.join([..join(['fred', 'dixon']), ..join(['gmail', 'com'])]) said unto the world upon 2005-03-12 19:20:
the code below will not execute the except section when i enter a number. what am i missing ?
######################################### .while 1: . print 'Pump Protection ? ' . #line 133 . try: . myInput = raw_input('A B C D E F G H I J K L ? ') . myInput = string.upper(myInput) . if myInput == 'A':break # . if myInput == 'B':break # . if myInput == 'C':break # . if myInput == 'D':break # . if myInput == 'E':break # . if myInput == 'F':break # . if myInput == 'G':break # . if myInput == 'H':break # . if myInput == 'I':break # . if myInput == 'J':break # . if myInput == 'K':break # . if myInput == 'L':break # . except ValueError: . print "Oops! That was no valid number. Try again..." . pass
.'s are to preserve indents. fred
Hi fred,
You are missing that raw_input returns a string.
PythonWin 2.4 (#60, Nov 30 2004, 11:49:19) [MSC v.1310 32 bit (Intel)] on win32.
Portions Copyright 1994-2004 Mark Hammond ([EMAIL PROTECTED]) - see 'Help/About PythonWin' for further copyright information.
Give me a number!42example = raw_input('Give me a number!')
<type 'str'>type(example)
I am also not sure why you expected a ValueError:
>>> import string >>> a = 42 >>> string.upper(a) Traceback (most recent call last): File "<interactive input>", line 1, in ? File "C:\PYTHON24\lib\string.py", line 235, in upper return s.upper() AttributeError: 'int' object has no attribute 'upper' >>>
Additionally, string methods are often preferred to the string module: >>> b = 'lower' >>> b.upper() 'LOWER' >>>
You might also want to test
if myInput in ('A', 'B', 'C', 'etc'): . break
instead of your chain of if tests.
Best,
Brian vdB
-- http://mail.python.org/mailman/listinfo/python-list