Python Forum

Full Version: Alternate solutions to cipher problem?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I coded the following program to translate a string using a cipher dictionary:

CIPHER_DICT = {'e': 'u', 'b': 's', 'k': 'x', 'u': 'q', 'y': 'c', 'm': 'w', 'o': 'y', 'g': 'f', 'a': 'm', 'x': 'j', 'l': 'n', 's': 'o', 'r': 'g', 'i': 'i', 'j': 'z', 'c': 'k', 'f': 'p', ' ': 'b', 'q': 'r', 'z': 'e', 'p': 'v', 'v': 'l', 'h': 'h', 'd': 'd', 'n': 'a', 't': ' ', 'w': 't'}

print(' This is a cipher program, which translates text as directed by cipher_dict:')
print(CIPHER_DICT)
print(' We will operate on:')
print()
str1 = 'the quick brown fox jumped over the lazy dog' #Substituted lower for upper case t as first letter
print('', str1)
print()

count = 0
liststr1 = list(str1) #gets list of characters in string

for letter in liststr1:
    newval = CIPHER_DICT[letter]
    liststr1[count] = newval
    count = count + 1 #using list index to rewrite list

print(' Translated string list is: ',liststr1)
print()
print(" In English, that is:","".join(liststr1)) #converting back to list
I'm a newbie so I'm thinking that is quite inefficient. I took a string, converted to list, and went back to string.

What better ways could I have used to solve this?

Thanks!
List comprehensions are faster than equivalent loops. We can remove some of the supporting assignments, conversions, and operations too.

CIPHER_DICT = {'e': 'u', 'b': 's', 'k': 'x', 'u': 'q', 'y': 'c', 'm': 'w', 'o': 'y', 'g': 'f', 'a': 'm', 'x': 'j', 'l': 'n', 's': 'o', 'r': 'g', 'i': 'i', 'j': 'z', 'c': 'k', 'f': 'p', ' ': 'b', 'q': 'r', 'z': 'e', 'p': 'v', 'v': 'l', 'h': 'h', 'd': 'd', 'n': 'a', 't': ' ', 'w': 't', ' ': ' '}
str1 = 'the quick brown fox jumped over the lazy dog'
print("".join([CIPHER_DICT[x] for x in str1]))
(Oct-03-2019, 05:34 PM)stullis Wrote: [ -> ]List comprehensions are faster than equivalent loops. We can remove some of the supporting assignments, conversions, and operations too.

Can you give me a couple examples, Stullis?
A nice review of list comprehensions can be found at
Socratica - Youtube on list comprehensions
This shows several examples of varying complexity.