Я пытаюсь написать функцию rot(c,n)
, которая вращает один символ c вперед на n точек в алфавите.Сумасшедшая задача: вращающиеся буквы в функции шифрования Python
def rot(c,n):
""" rotate c forward by n characters,
wrapping as needed; only letters change
"""
if 'a' <= c <= 'z': # lower-case
new_ord = ord(c) + n
if new_ord > ord('z'):
new_ord = new_ord - (2*n)
elif 'A' <= c <= 'Z': # upper-case
new_ord = ord(c) + n
if new_ord > ord('Z'):
new_ord = new_ord - (2*n)
else: # non-alpha
new_ord = ord(c)
return chr(new_ord)
Однако мои желаемые результаты могут быть следующие:
>>> rot('a', 2)
'c'
>>> rot('y', 2)
'a'
>>> rot('A', 3)
'D'
>>> rot('Y', 3)
'B'
>>> rot('!', 4)
'!'
я получаю неправильные выводы. Может ли кто-нибудь сказать мне, что я делаю неправильно?
подсказка: 'new_ord = new_ord - (2 * п)'. – isedev
что вы подразумеваете под этим точно. –
Он означает, что эта строка неверна. – Kevin