Alternate solutions to cipher problem? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Alternate solutions to cipher problem? (/thread-21536.html) |
Alternate solutions to cipher problem? - Mark17 - Oct-03-2019 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 listI'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! RE: Alternate solutions to cipher problem? - stullis - Oct-03-2019 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])) RE: Alternate solutions to cipher problem? - Mark17 - Oct-08-2019 (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? RE: Alternate solutions to cipher problem? - jefsummers - Oct-08-2019 A nice review of list comprehensions can be found at Socratica - Youtube on list comprehensions This shows several examples of varying complexity. |