我必须验证字符串是 4 位还是 6 位。字符串不能包含任何字符,只能包含整数。如果满足条件则返回真,否则返回假。我尝试创建一个包含可接受数字的列表并遍历字符串并进行比较。如果字符串的任何部分不在可接受的列表中,我将退出循环并返回 false。如果运行总数等于 4 或 6,那么它应该是真的。蟒蛇代码:def validate(n): count = 0 valid_list = list(range(10)) for digit in pin: if digit not in valid_list: return False count += 1我不确定为什么像 1234 这样的东西被返回为 False。
2 回答

一只甜甜圈
TA贡献1836条经验 获得超5个赞
用正则表达式怎么样?
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

手掌心
TA贡献1942条经验 获得超3个赞
我不确定为什么像 1234 这样的东西被返回为 False。
Python 永远不会在整数和字符串之间进行隐式转换,并且整数和字符串之间的比较总是错误的。
“valid_list”是一个整数列表,但“digit”是一个字符串,所以你永远不会在你的列表中找到任何东西。
添加回答
举报
0/150
提交
取消