Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Caesar Cipher ใน Python


สมมติว่าเรามีสตริงตัวอักษรพิมพ์เล็ก s และตัวเลขออฟเซ็ตบอกว่า k เราต้องแทนที่ตัวอักษรทุกตัวใน s ด้วยตำแหน่งตัวอักษร k ต่อไปตามตัวอักษร เราต้องจำไว้ว่าเมื่อตัวอักษรล้นผ่าน a หรือ z จดหมายจะพันรอบอีกด้านหนึ่ง

ดังนั้น หากอินพุตเป็นแบบ "hello" ให้ k =3 เอาต์พุตจะเป็น "khoor"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน shift() นี่จะใช้เวลาค

  • ผม :=ASCII ของ (c) - ASCII ของ ('a')

  • ผม :=ผม + k

  • ฉัน :=ฉัน mod 26

  • ส่งคืนอักขระจาก ASCII (ASCII ของ ('a') + i)

  • จากวิธีหลัก ให้ทำดังนี้ −

  • ret :=สำหรับแต่ละอักขระ c ใน s สร้างรายการองค์ประกอบโดยเรียก 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