I'm trying to subtract letters in Python, but I can't do it the proper way.
I know how to get the ord of the letter.
Like:
a = "a"
x = ord(a) # -> this will give me 97.
When I try to subtract values from that letter I get a completely different result than what I wanted.
If I subtract 1 from b I get 97 (which represents a), but now I want to subtract 14 from b, and I want to reach a, then go back to z and continues the subtraction.
a = 97
b = 98
...
z = 122
I want to continue looping in the lower case alphabet, which is between 97 and 122.
Example, If I subtract 14 from b, I get 84, but in the way that I want to do it I wanted to get n.
b - 14 = a - 13 = z - 12 (...) and so on.
I hope you could understand what I meant to say.
;)
Can anyone help me here ?
Regards, Ivan.
I would isolate just the lower case letters, then use slicing to your advantage. When you subtract past the beginning of the list, you will get a negative index, which will start indexing from the back of the list. This should give you the behavior you expect.
>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> s.find('c')
2
>>> s[s.find('c') - 6]
'w'
Note that to make sure that + still works, you need to use the % operator in case you wrap around the list going forward.
>>> s.find('x')
23
>>> s[(s.find('x') + 5) % 26]
'c'
>>> s[(s.find('c') - 6) % 26]
'w'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With