[Tutor] Problem formatting raw_input
Peter Anderson
peter.anderson at internode.on.net
Fri Oct 31 04:03:41 CET 2008
Hi!
I am teaching myself Python using John Zelle's excellent book Python
Programming (ISBN: 1-887902-99-6). At the end of Chapter 4 - Computing
with Strings is an exercise to convert an existing program to use a list
to decode ASCII number input. My solution is shown below.
My problem is with the actual entry of the ASCII codes. My solution has
a "if" test to remove the leading "0" from an input of say "033". With
this test the output of the decode is correct in printing "!". Without
the "if" test the output is "\x1b" at best or a run-time error for other
numbers.
My question is this: is there a better way to convert raw input of say
"033" to "33" than what I have used? Thanks in advance for any help.
My source code
---------------
import string
def main():
print "This script converts a sequence of ASCII numbers"
print "into the string of text that it represents."
print
data = getNumbers()
print data
def getNumbers():
# Setup an empty list
inString = []
# Get the numbers to decode
inNum = raw_input("Please enter an ASCII number\n(33 - 126, [Enter] to
quit): ")
while inNum != "":
# strip leading '0's from ASCII numbers
if inNum[0] == "0":
inNum = inNum[1] + inNum[2]
inStr = chr(eval(inNum))
inString.append(inStr) # append the input to the list
inNum = raw_input("Please enter an ASCII number\n(33 - 126, [Enter] to
quit): ")
return inString
if __name__ == '__main__':
main()
--
*Peter Anderson*
There is nothing more difficult to take in hand, more perilous to
conduct, or more uncertain in its success, than to take the lead in the
introduction of a new order of things—Niccolo Machiavelli, /The Prince/,
ch. 6
More information about the Tutor
mailing list