Hi list! <snip> My Python version is 2.7.1 and my OS is Linux Mint 11.
My code is this one: def decrypt(cypheredText, shiftedCypherNumber): ''' This function will take two arguments. The first is the cyphered text, the second is the number of characters we need to shift the text so we can decrypt it. This is a Caesar cypher. ''' crypticText = list(cypheredText) for letter in crypticText: asciiValue = ord(letter) asciiValue += shiftedCypherNumber newLetter = chr(asciiValue) print newLetter This solves the riddle, however some characters are not correctly decyphered (a is coming back as {...) and prints the solution like this: r e c o m m <snip> - How can I make this "Human readable"? ... Print the letters in just one (or more) lines and maybe replace the " for spaces (This one I suppose it could/should be done with whitespaces() or just making a loop to check and change those for ' '.) Thanks for your time! -- Joaquim Santos http://js-vfx.com linkedin ============================================= Remove the print in the function. Add each character to a list (char_list) after you are have gotten newLetter: return ''.join( char_list ) def decrypt(cypheredText, shiftedCypherNumber): ''' This function will take two arguments. The first is the cyphered text, the second is the number of characters we need to shift the text so we can decrypt it. This is a Caesar cypher. ''' crypticList = [] crypticText = list(cypheredText) for letter in crypticText: asciiValue = ord(letter) # Add some range checking / wrapping here asciiValue += shiftedCypherNumber newLetter = chr(asciiValue) crypticList.append( newLetter ) return ''.join( crypticList ) Creating a list of the string is unnecessary. You can iterate through the string directly. for letter in cypheredText: In order to avoid getting '{', you need to do some range checking. Since this is based on ASCII your ranges are: A-Z = 65-90 a-z = 97-122 When it crosses the end of the range (90 or 122), it should then come back to the beginning. That way z wraps to a, and Z to A (for shifting number of 1). Alternatively, you can just make the entire string upper/lower case and then not deal with multiple cases. Ramit Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology 712 Main Street | Houston, TX 77002 work phone: 713 - 216 - 5423 -- This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor