The answers come one by one but if the value is over 122 then the following code doesn't work.
def rotate_word13(line, num):
for x in line:
a = ord(x)
a = ord(x) + num
print(a)
if a >= 122:
e = a - 122
print(e)
x = chr(e)
print(x)
else:
x = chr(a)
print(x)
rotate_word13("hello", 13)
rotate_word13("r", 13)
Here is the result. As you can see it works only if ord
is less than 122 after it's been subtracted.
117
u
114
r
121
y
121
y
124
2
127
5
You seem to be trying to implement the ROT13 cypher.
You need to take account of upper- and lower-case letters. Simply find where the letter is in an ordered list of letters, add 13 to that index and then modulo by 26.
Like this:
from string import ascii_lowercase as L, ascii_uppercase as U
def rot13(s):
r = []
for c in s:
if (i := U.find(c)) >= 0:
r.append(U[(i + 13) % 26])
elif (i := L.find(c)) >= 0:
r.append(L[(i + 13) % 26])
else:
r.append(c)
return ''.join(r)
print(rot13('Why did the chicken cross the road'))
Output:
Jul qvq gur puvpxra pebff gur ebnq