문제
문자열 s를 돌면서 isAlpha로 알파벳인지 판별, 대문자인지 소문자인지 추가로 판별한 후 알파벳을 바꿔주면 되는 문제.
다소 코드가 더러운데, ord와 chr 함수를 사용한다면 좀 더 깔끔하게 개선할 수 있을듯 하다.
코드
from string import ascii_lowercase
from string import ascii_uppercase
def caesarCipher(s, k):
lower_case = list(ascii_lowercase) * (k + 1)
upper_case = list(ascii_uppercase) * (k + 1)
cipher = ''
for i in s:
if i.isalpha():
if i in lower_case:
idx = lower_case.index(i)
cipher += lower_case[idx + k]
elif i in upper_case:
idx = upper_case.index(i)
cipher += upper_case[idx + k]
else:
cipher += i
return cipher