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

โปรแกรม Python เช็คเลขบัตรเครดิตว่าถูกต้องหรือไม่


สมมติว่าเรามีหมายเลขบัตรเครดิต เราต้องตรวจสอบว่าหมายเลขบัตรถูกต้องหรือไม่ หมายเลขบัตรมีคุณสมบัติบางอย่าง -

  • จะขึ้นต้นด้วย 4, 5 และ 6

  • จะมีความยาว 16 หลัก

  • ตัวเลขต้องมีเฉพาะตัวเลขเท่านั้น

  • อาจมีตัวเลขในสี่กลุ่มคั่นด้วย '-'

  • ต้องไม่ใช้ตัวคั่นอื่นใด เช่น ช่องว่างหรือขีดล่าง

  • ต้องไม่มีตัวเลขที่เหมือนกันติดต่อกันตั้งแต่ 4 หลักขึ้นไป

ดังนั้น หากอินพุตเป็น s ="5423-2578-8632-6589" ผลลัพธ์จะเป็น True

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

  • ถ้าจำนวน '-' ใน s มากกว่า 0 ดังนั้น
    • a :=รายการส่วนคั่นด้วย "-"
    • p:=1
    • ถ้าขนาด a ไม่เท่ากับ 4 แล้ว
      • p:=null
      • a:=รายการว่าง
    • สำหรับแต่ละ b ใน a ทำ
      • ถ้าขนาด b ไม่เท่ากับ 4 แล้ว
        • p:=null
        • ออกมาจากลูป
  • มิฉะนั้น
    • p :=ค้นหาสตริงย่อยที่ขึ้นต้นด้วย 4 หรือ 5 หรือ 6 และเหลือเป็นตัวเลขยาว 15 หลัก
    • s :=ลบ "-" ออกจาก s
    • q :=ค้นหาสตริงย่อยที่มีอักขระต่อเนื่องกันตั้งแต่ 4 ตัวขึ้นไป
    • ถ้า p ไม่เป็นค่าว่าง และ q เป็นค่าว่าง ดังนั้น
      • คืนค่า True
    • มิฉะนั้น
      • คืนค่าเท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น

import re

def solve(s):
   if s.count("-")>0:
      a = s.split("-")
      p=1
      if len(a)!=4:
         p=None
         a=[]
      for b in a:
         if len(b)!=4:
            p=None
            break
         else:
            p = re.search("[456][0-9]{15}",s)
         s = s.replace("-","")
         q = re.search(".*([0-9])\\1{3}.*",s)

         if p!=None and q==None:
            return True
         else:
            return False

s = "5423-2578-8632-6589"
print(solve(s))

อินพุต

"5423-2578-8632-6589"

ผลลัพธ์

False