我必须验证字符串是4位还是6位数字。该字符串不能包含任何字符,只能包含整数。如果满足条件,则返回true,否则返回false。
我试图用可接受的数字创建一个列表,然后遍历字符串并进行比较。如果字符串的任何部分不在可接受列表中,我将退出循环并返回false。如果运行总计等于4或6,则应为true。 python代码:
def validate(n):
count = 0
valid_list = list(range(10))
for digit in pin:
if digit not in valid_list:
return False
count += 1
我不确定为什么会以False之类返回1234之类的信息。
答案 0 :(得分:2)
使用正则表达式怎么样?
import re
str="03506"
pattern="[0-9]{4,6}"
prog=re.compile(pattern)
result=prog.match(str)
if result:
return True
else:
return False
这将匹配4到6个字符长的数字。如果您要匹配长度为4或6的字符串,则可以尝试
import re
str="03506"
pattern1="[0-9]{4}"
pattern2="[0-9]{6}"
if re.match(pattern1,str) or re.match(pattern2, str):
return True
else:
return False
答案 1 :(得分:0)
我不确定为什么会以False之类返回1234之类的信息。
Python绝不会在整数和字符串之间进行隐式转换,并且整数和字符串之间的比较始终为假。
“ valid_list”是一个整数列表,而“ digit”是一个字符串,因此您将永远在列表中找不到任何内容。