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+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告