我尝试从hacerrank Click开始锻炼
我不知道如何添加这些规则:
►它可能有4个一组的数字,用一个连字符分隔" - "。
►不得有4个或更多连续重复的数字。
这是我的代码:
how_many=1 #This version for tests, Here will be input()
for i in range(how_many):
string=input()
formated_str=''.join(string.split('-', 4))
if (char.isdigit() for char in formated_str) and len(formated_str)==16 and (formated_str[0]=='4' or formated_str[0]=='5' or formated_str[0]=='6'):
print("Valid")
else:
print("Invalid")
问题:
我不知道formated_str=''.join(string.split('-', 4))
会像他们想要的那样工作,我的意思是"►它可能有4个一组的数字,用一个连字符分隔" - &# 34;"以及如何实施第二条规则?
答案 0 :(得分:2)
下面的函数首先删除代码字符串中的-
,然后检查数字重复。正则表达式是以下r"\d*(\d)\1{3,}\d*"
。
如果正则表达式匹配,则代码无效,函数返回False
。否则,该函数拆分原始代码字符串,然后检查每个子字符串的长度。
import re
string = "2134-4444-4412-3241"
string1 = "2134-4344-4412-3241"
string2 = "2134-4342-4412-3241"
def isValid(aString):
pattern = r"\d*(\d)\1{3,}\d*"
isValid = True
rep_string = aString.replace('-', "")
print(rep_string)
if (not re.search(pattern, rep_string)):
splitted = string.split('-')
for split in splitted:
if (len(split)!=4):
return(False)
return(isValid)
else:
return(False)
print(isValid(string))
print(isValid(string1))
print(isValid(string2))
我希望这个解决方案可以帮到你。这段代码将为您提供以下输出:
False
False
True