Python程式檢查信用卡號碼是否有效


假設我們有一個信用卡號碼。我們需要檢查該卡號是否有效。卡號具有一定的屬性:

  • 以4、5或6開頭

  • 長度為16位

  • 號碼只能包含數字

  • 號碼可以分成四組,用“-”分隔

  • 不能使用其他分隔符,如空格或下劃線

  • 不能有4個或以上連續相同的數字

因此,如果輸入類似s = "5423-2578-8632-6589",則輸出為True

為了解決這個問題,我們將遵循以下步驟:

  • 如果s中“-”的數量大於0,則
    • a := 由“-”分隔的部分組成的列表
    • p:= 1
    • 如果a的大小不等於4,則
      • p:= null
      • a:= 空列表
    • 對於a中的每個b,執行以下操作:
      • 如果b的大小不等於4,則
        • p:= null
        • 退出迴圈
  • 否則,
    • p := 搜尋一個以4、5或6開頭,後面跟著15位數字的子字串
    • s := 從s中刪除“-”
    • q := 搜尋4個或以上連續字元相同的子字串
    • 如果p不為null且q為null,則
      • 返回True
    • 否則,
      • 返回False

示例

讓我們看看下面的實現,以便更好地理解

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

更新於: 2021年10月12日

3K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.