首页 > 解决方案 > 使用 90 个测试用例进行测试时失败

问题描述

我正在制作一个简单的程序来检查 UID 是否有效:

这是我正在使用的代码:

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 个值的测试用例上给出答案。
这是我正在尝试的测试的链接

标签: python

解决方案


数字测试没有理由依赖于大写测试。

改变:

if cap_count > 1 and p.isnumeric():

到:

if p.isnumeric():

此外,应该为每个新值重置计数器,因此将计数器初始化移动到循环内:

for x in values[:]:
    cap_count = 0
    num_count = 0
    ...

推荐阅读