progressBefore = 0 def printProgressBar(percent, prefix = ''): global progressBefore if percent - progressBefore < 0.001: return progressBefore = percent percentStr = ("{0:.1f}").format(percent*100) filledLength = int(30 * percent) bar = '█' * filledLength + '-' * (30 - filledLength) print('\r%s |%s| %s%% ' % (prefix, bar, percentStr),end='') def checkID(id): if len(id) != 18: with open('error.txt','wt') as file: file.write("{}\n".format(id)) else: tmp = [] for i in id[0:17]: if not i.isdigit(): with open('error.txt','wt') as file: file.write("{}\n".format(id)) else: i = int(i) tmp.append(i) weights = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] lZ = [0,1,2,3,4,5,6,7,8,9,10] lM = ['1','0','X','9','8','7','6','5','4','3','2'] sum = 0 for i in range(17): sum += tmp[i]*weights[i] Z = sum % 11 if lM[lZ.index(Z)] != id[17]: with open('error.txt','wt') as file: file.write("{}\n".format(id)) break f = open("ids.txt","rt") lines = f.readlines() for j in lines: jcopy = j.replace('\n','') checkID(jcopy) printProgressBar((lines.index(j)+1)/100000,prefix="Progress:")
时间: 2024-04-15 07:25:35 浏览: 9
这段代码是一个用于检测身份证号码是否合法的程序。它首先定义了一个打印进度条的函数`printProgressBar`,然后定义了一个检测身份证号码的函数`checkID`。在主程序中,它从文件"ids.txt"中读取身份证号码,并逐个调用`checkID`函数进行检测,同时使用`printProgressBar`函数打印检测进度条。
具体来说,`checkID`函数会先检查身份证号码的长度是否为18位,如果不是,则将该身份证号码写入到文件"error.txt"中。如果长度为18位,则将身份证号码的前17位逐个转换为整数,并根据一定的权重进行计算。计算结果与身份证号码的第18位进行比较,如果不匹配,则同样将该身份证号码写入到文件"error.txt"中。
主程序则通过读取文件"ids.txt"逐行获取身份证号码,并调用`checkID`进行检测。同时,使用`printProgressBar`函数打印检测进度条,以显示检测的进度。
相关问题
top_percent = 0.001;
这是一个用于计算大气光照值的参数,用于确定图像中亮度最高的前0.1%的像素作为大气光照值。具体来说,top_percent的值为0.001表示取亮度最高的前0.1%的像素作为大气光照值。这个值可以根据具体情况进行调整,例如当图像质量较差或者亮度变化较大时,可以适当增大top_percent的值,以提高大气光照值的准确性。
tableLayoutPanel1.RowStyles[0].SizeType = SizeType.Percent;
这段代码的作用是设置TableLayoutPanel中第一行的高度类型为百分比,即该行的高度将根据TableLayoutPanel的总高度和其他行的高度进行自动调整,并且将该行的高度设置为0。在TableLayoutPanel中,如果多个行的高度类型都设置为百分比,则它们将根据其在TableLayoutPanel中的比例来分配剩余空间。
例如,如果TableLayoutPanel的总高度为100像素,同时第一行、第二行和第三行的高度类型都为百分比,并且分别设置为20%、30%和50%,则实际高度将分配为20像素、30像素和50像素。如果您将某一行的高度类型设置为绝对值,则该行的高度将始终保持不变,而其他行的高度将自动调整以适应TableLayoutPanel的总高度。