Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 시저 암호

<시간/>

소문자 알파벳 문자열이 있고 오프셋 번호가 k라고 가정합니다. s에 있는 모든 문자를 알파벳을 따라 k 위치에 있는 문자로 바꿔야 합니다. 문자가 또는 z를 지나 넘칠 때 다른 면으로 감겨진다는 점을 명심해야 합니다.

따라서 입력이 "hello"와 같으면 k =3이면 출력은 "khoor"가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • shift() 함수를 정의합니다. 시간이 걸립니다

  • i :=(c)의 ASCII - ('a')의 ASCII

  • 나는 :=나는 + k

  • 나는 :=나는 모드 26

  • ASCII에서 문자 반환(('a') + i의 ASCII)

  • 기본 방법에서 다음을 수행하십시오 -

  • ret :=s의 각 문자 c에 대해 shift(c)

    를 호출하여 요소 목록을 만듭니다.
  • 리턴 렛

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

class Solution:
   def solve(self, s, k):
      def shift(c):
         i = ord(c) - ord('a')
         i += k
         i %= 26
         return chr(ord('a') + i)

      return "".join(map(shift, s))

ob = Solution()
print(ob.solve("hello", 3))

입력

"hello", 3

출력

khoor