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不为空并且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