我尝试从 hacerrank 点击我不知道如何添加这些规则:
► 它可以有 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 组的数字,用一个连字符"-"分隔。以及如何实施这第二条规则?
下面的函数首先删除代码字符串中的-
,然后检查数字重复。正则表达式是以下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