Ene Uran
Posting Virtuoso
1,723 posts since Aug 2005
Reputation Points: 625
Solved Threads: 213
Why don't you try something like this:
from string import letters
# Upper letters only
letters = letters[26:]
c_string = raw_input("Enter desired sentence to convert: ")
cs_string = 5
ci_string = cs_string % 26
upper_string = c_string.upper()
for ch in upper_string:
lett_idx = letters.find(ch)
if lett_idx != -1:
lett_idx -= cs_string
if lett_idx < 0:
lett_idx += len(letters)
print letters[lett_idx],
You don't actually need to do the check for if lett_idx < 0 since negative indices in Python will still give you the same result, I was just keeping your logic intact
jlm699
Veteran Poster
1,112 posts since Jul 2008
Reputation Points: 355
Solved Threads: 292
Hey guys I managed to figure it out myself. Thanks for the help.
However what in my code makes it insert a space after every letter and how do I undo that? like if I input "BJ" the output is "W E" and I just want "WE." And how can I restrict it to an 80 character window without wrapping if the input is a very long single line? Thanks a ton.
Having a comma in your print statement gives you the spaces. Either upgrade to Python3.X with the new print function or use sys.stdout like so:
import sys
# Your code here
#Instead of print chr(ascii), use this:
sys.stdout.write(chr(ascii))
Either that or simply create a new string variable in your loop and print it after the loop exits:
new_str = ''
# Do stuff
for ch in usr_input:
# Do stuff
new_str += new_character
print new_str
HTH
jlm699
Veteran Poster
1,112 posts since Jul 2008
Reputation Points: 355
Solved Threads: 292