Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python kiểm tra số thẻ tín dụng có hợp lệ không


Giả sử chúng ta có một số thẻ tín dụng. Chúng ta phải kiểm tra xem số thẻ có hợp lệ hay không. Các số thẻ có những thuộc tính sau:

  • Sẽ bắt đầu bằng 4, 5 và 6

  • Sẽ dài 16 chữ số

  • Chỉ chứa chữ số

  • Có thể có chữ số được chia thành 4 nhóm tách bằng '-'

  • Không được dùng phân tách khác như dấu cách hoặc gạch dưới

  • Không được có 4 hoặc nhiều chữ số liên tiếp giống nhau

Vì vậy, nếu đầu vào là s = "5423-2578-8632-6589", thì đầu ra sẽ là True.

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

  • nếu số lượng '-' trong s lớn hơn 0, thì
    • a := danh sách các phần tách bằng "-"
    • p:= 1
    • nếu kích thước a không bằng 4, thì p:= null, a:= danh sách rỗng
    • với mỗi b trong a, thực hiện
      • nếu kích thước b không bằng 4, thì p:= null, thoát vòng lặp
  • ngược lại,
    • p := tìm chuỗi con bắt đầu bằng 4 hoặc 5 hoặc 6 và 15 chữ số còn lại
    • s := bỏ "-" khỏi s
    • q := tìm chuỗi con có 4 hoặc nhiều ký tự liên tiếp giống nhau
    • nếu p không null và q là null, thì trả về True
    • ngược lại, trả về False

Ví dụ

Hãy xem triển khai sau để hiểu rõ hơn:

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

Đầu vào

"5423-2578-8632-6589"

Đầu ra

False