[Tutor] printing multiple values from a list in one command

Alan Gauld alan.gauld at blueyonder.co.uk
Sun Jun 6 12:56:26 EDT 2004


 > etc). However, when I try to write the code such that when the text
to be
> translated is in the lowercase (the first half of ascii_letters),
the program
> should print the corresponding value in binary.


> Short of defining each letter as a binary number,

You mean like ASCII?
I'm not sure what you are trying to achieve by mapping one binary
number
(the ASCII code) to another (your arbitrary value)?

>         if char in alphabet[range(0-26)]:

This won't work because range returns a list and a list index must
be a single integer. I suspect you just want

if char in string.ascii_lowercase:
   print binary[ord(char)]

>         elif char in alphabet[range(27-52)]:
>             print binary[range(27-52)]

and
if char in string.ascii_uppercase:
   print binary(ord(char))

Or replacing both


if char in string.letters:
   print binary(ord(char))

>         elif char not in alphabet:
>             print "Sorry, you didn't enter valid text. Please enter
standard
> letters only."

And this should probably be plain 'else' just to catch any other
condition.

If you really do want to use your handcrafted alphabet you should use
slicing:

if char in alphabet[0:26]:  # or just [:26]

elif char in alphabet[16:52]: # or just [26:]

BTW, It has been discussed several times in the past on tutor, how to
write a function to generate binary strings from numbewrs, you might
find a search of the tutor archives onActivestate useful. Also for
hex display the standard format string can do that for you (%x or %X)

Good luck,

Alan G.




More information about the Tutor mailing list