python - 使用 90 个测试用例进行测试时失败
问题描述
我正在制作一个简单的程序来检查 UID 是否有效:
- 它必须包含至少 2 个大写英文字母字符。
- 它必须至少包含 3 个数字 (0-9)。
- 它应该只包含字母数字字符(az、AZ 和 0-9)。
- 任何字符都不应重复。
- 有效的 UID 中必须正好有 10 个字符。
这是我正在使用的代码:
if __name__ == '__main__':
n = int(input())
values = [str(input()) for q in range(1,n+1)]
def checker():
cap_count = 0
num_count = 0
alnm_count = 0
for x in values[:]:
for p in x:
if p.isupper():
cap_count = cap_count+1
if cap_count > 1 and p.isnumeric():
num_count = num_count+1
if (len(x) == 10) and (x.isalnum()) and (len(x) == len(set(x))) and (cap_count > 1) and (num_count > 2):
print("Valid")
else:
print("Invalid")
checker()
样本输入:
2
B1CD102354
B1CDEF2354
因此,在提供这些输入时,它运行良好。我已经尝试了多达 6-7 个输入并且它可以工作。
没有错误,只是没有在一个具有 90 个值的测试用例上给出答案。
这是我正在尝试的测试的链接
解决方案
数字测试没有理由依赖于大写测试。
改变:
if cap_count > 1 and p.isnumeric():
到:
if p.isnumeric():
此外,应该为每个新值重置计数器,因此将计数器初始化移动到循环内:
for x in values[:]:
cap_count = 0
num_count = 0
...
推荐阅读
- amazon-ecs - AWS ECS 容器卡在重启循环中
- numpy - 这种乘法是否存在隐式转换?
- laravel - Laravel 无法将字段更新为空
- performance - 如何对拥有大量用户的 PHP 网站进行负载测试?
- python-3.x - ERR_NAME_NOT_RESOLVED:Angular pod 未与 Kubernetes 中的 python 后端通信
- python - 格式化为 json 的 uWSGI 启动日志
- vb.net - 将窗体的所有者设置为控件,而不是窗体
- excel - Excel 结构化引用过滤表并生成列表
- javascript - 如何在 jQuery 中使用 array_key_exists() 和 ksort()?
- python - Django:通过 SQL 过滤,而不是 Python