def import_area_id(self): try: with open(file=self.file_path,mode="r",encoding="UTF-8") as fd: current_line = fd.readline() while current_line: current_area_list = current_line.split(",") if len(current_area_list[0]) == 6: self.area_list.append(current_area_list) current_line = fd.readline() except: showinfo("系统提醒","地区文件读取失败")
(2)校验当前身份证上的地区码是否在列表中;我们定义一个validate_area_id的方法,将从输入的身份证号码中的地区码与area_list中的地区码进行比对,从而获取对应的地区名
def validate_area_id(self): for index in range(len(self.area_list)): if self.area_list[index][0] == self.id_list[0]: self.area_name = self.area_list[index][1] break
4. 识别身份证号码的性别我们可以直接根据身份证号码的第三部分判断其奇偶数来确定性别,id_list列表的第三部分存储的是顺序码,将顺序码先转为整型然后对2取余 。如果等于0说明是偶数,即女性;如果等于1说明是奇数,即男性 。
def get_gender(self): if int(self.id_list[2]) % 2 == 0: self.gender = "女" else: self.gender = "男"
五、完成身份证的校验我们在id_checkgui模块中,定义一个get_info函数用于对输入的身份证号码进行校验 。我们需要导入前面写的idcheck模块,使用该模块下的IdCheck类构造一个检验对象check_id,传入的参数为本模块GUI中输入框获取到的值 。
校验逻辑为:
文章插图
身份证校验的逻辑
def get_info(self): id_number = self.var_input.get() if len(id_number) == 18: check_id = idcheck.IdCheck(id_number) if check_id.is_true_id_number == 0 or len(check_id.birthday) == 0 or len(check_id.area_name) == 0: self.var_enable.set("无效!") else: self.var_enable.set("有效") self.var_gender.set(check_id.gender) self.var_birthday.set(check_id.birthday) self.var_area.set(check_id.area_name) else: self.var_enable.set("无效") self.var_gender.set("") self.var_birthday.set("") self.var_area.set("") showinfo("系统消息", "输入的身份证号码不满18位,请重新输入!")
最后再将GUI模块中的校验按钮添加command参数其值设置为get_info即可 。效果演示:情况一:输入的身份证号码不满18位(我们故意输入17位):
文章插图
身份证号码位数不足时
情况二:最后一位校验位错误(本来是7我们故意输入8)
文章插图
最后一位身份证号码故意输错时
情况三:输入正确的身份证号码的情况
推荐阅读
- 楼下邻居总偷网,改密码也没用,该怎么办?
- 电脑文件夹加密的三种方法,又简单又免费又实用
- 两句描写雨的诗句?你知道哪些写雨的诗句请写出两则
- WIN7上的极限操作:将已用内存控制在36MB
- 使用管道服务器在任何设备之间进行文件传输
- 用python写一个下载文件的小工具
- 白茶可以治疗糖尿病,喝白茶有控制血糖的作用
- 不可忽视的茶暗语,茶药膳疗法对保健起着不可忽视的作用
- 绿茶的作用,绿茶作用,绿茶的防癌与抗癌的效果作用
- 白毫银针用多少度水泡,白毫银针十不采