Computer >> Máy Tính >  >> Lập trình >> Python

Mật mã Caesar bằng Python

Giả sử chúng ta có một chuỗi chữ cái viết thường s và một số bù là k. Chúng ta phải thay thế mọi chữ cái trong s bằng một chữ k ở vị trí xa hơn dọc theo bảng chữ cái. Chúng ta phải lưu ý rằng khi chữ cái tràn qua a hoặc z, nó sẽ bị quấn quanh phía bên kia.

Vì vậy, nếu đầu vào là "hello", k =3, thì đầu ra sẽ là "khoor"

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Định nghĩa một hàm shift (). Điều này sẽ mất c

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

  • i:=i + k

  • i:=i mod 26

  • trả về ký tự từ ASCII (ASCII của ('a') + i)

  • Từ phương thức chính, thực hiện như sau -

  • ret:=với mỗi ký tự c trong s, tạo danh sách các phần tử bằng cách gọi shift (c)

  • trả lại ret

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

"hello", 3

Đầu ra

khoor