做黑彩网站图片,网站建设及推广图片,电子商务毕业设计网站建设业务,国家质量监督局官网Python获取身份证信息
公民身份号码是每个公民唯一的、终身不变的身份代码#xff0c;由公安机关按照公民身份号码国家标准编制。每一个居民只能拥有一个唯一的身份证#xff0c;它是用于证明持有人身份的一种法定证件。 身份证包含了个人的一些重要信息#xff0c;比如由公安机关按照公民身份号码国家标准编制。每一个居民只能拥有一个唯一的身份证它是用于证明持有人身份的一种法定证件。 身份证包含了个人的一些重要信息比如
前6位数字是地址码表示发证地的行政区代码。接下来的8位数字是出生日期码表示出生年月日。之后的3位数字是顺序码表示在同一地址码范围内出生的人员顺序号。最后一位数字是校验码用于检验身份证的正确性。
除了这些基本的数字信息身份证上还可能包含其他相关信息如民族、性别等。这些信息可以通过相应的规则和算法进行解读和验证。 # -*- coding: utf-8 -*-
import tkinter as tk
import tkinter.messagebox
import pickle
import random# 窗口
window tk.Tk()
window.title(欢迎进入python)
window.geometry(450x200)
# 画布放置图片
# canvastk.Canvas(window,height300,width500)
# imagefiletk.PhotoImage(fileqm.png)
# imagecanvas.create_image(0,0,anchornw,imageimagefile)
# canvas.pack(sidetop)
# 标签 用户名密码
Verification_Code random.randint(1000, 9999)#设置一个随机的四位数
Verification_Code str(Verification_Code)#把类型转换为str型
print(type(Verification_Code))
tk.Label(window, text用户名:).place(x100, y30)
tk.Label(window, text密码:).place(x100, y70)
tk.Label(window, text验证码).place(x100, y110)
tk.Label(window, textVerification_Code).place(x320, y110)
# 用户名输入框
var_usr_name tk.StringVar()
entry_usr_name tk.Entry(window, textvariablevar_usr_name)
entry_usr_name.place(x160, y30)
# 密码输入框
var_usr_pwd tk.StringVar()
entry_usr_pwd tk.Entry(window, textvariablevar_usr_pwd, show*)
entry_usr_pwd.place(x160, y70)
#验证码输入框
var_usr_yzm tk.StringVar()
entry_usr_yzm tk.Entry(window, textvariablevar_usr_yzm)
entry_usr_yzm.place(x160, y110)# 登录函数
def usr_log_in():# 输入框获取用户名密码usr_name var_usr_name.get()usr_pwd var_usr_pwd.get()usr_yzm var_usr_yzm.get()#测试类型print(type(usr_yzm),type(Verification_Code))# 从本地字典获取用户信息,如果没有则新建本地数据库try:with open(usr_info.pickle, rb) as usr_file:usrs_info pickle.load(usr_file)except FileNotFoundError:with open(usr_info.pickle, wb) as usr_file:usrs_info {admin: admin}pickle.dump(usrs_info, usr_file)# 判断验证码是否正确用户名和密码是否匹配if usr_yzm Verification_Code:if usr_name in usrs_info:if usr_pwd usrs_info[usr_name]:tk.messagebox.showinfo(titlewelcome,message欢迎您: usr_name)else:tk.messagebox.showerror(message密码错误)# 用户名密码不能为空elif usr_name or usr_pwd :tk.messagebox.showerror(message用户名或密码为空)# 不在数据库中弹出是否注册的框else:is_signup tk.messagebox.askyesno(欢迎, 您还没有注册,是否现在注册)if is_signup:usr_sign_up()elif usr_yzm :tk.messagebox.showerror(message验证码不能为空)else:tk.messagebox.showerror(message验证码有误!)# 注册函数
def usr_sign_up():# 确认注册时的相应函数def signtowcg():# 获取输入框内的内容nn new_name.get()np new_pwd.get()npf new_pwd_confirm.get()# 本地加载已有用户信息,如果没有则已有用户信息为空try:with open(usr_info.pickle, rb) as usr_file:exist_usr_info pickle.load(usr_file)except FileNotFoundError:exist_usr_info {}# 检查用户名存在、密码为空、密码前后不一致if nn in exist_usr_info:tk.messagebox.showerror(错误, 用户名已存在)elif np or nn :tk.messagebox.showerror(错误, 用户名或密码为空)elif np ! npf:tk.messagebox.showerror(错误, 密码前后不一致)# 注册信息没有问题则将用户名密码写入数据库else:exist_usr_info[nn] npwith open(usr_info.pickle, wb) as usr_file:pickle.dump(exist_usr_info, usr_file)tk.messagebox.showinfo(欢迎, 注册成功)# 注册成功关闭注册框window_sign_up.destroy()# 新建注册界面window_sign_up tk.Toplevel(window)window_sign_up.geometry(350x200)window_sign_up.title(注册)# 用户名变量及标签、输入框new_name tk.StringVar()tk.Label(window_sign_up, text用户名:).place(x10, y10)tk.Entry(window_sign_up, textvariablenew_name).place(x150, y10)# 密码变量及标签、输入框new_pwd tk.StringVar()tk.Label(window_sign_up, text请输入密码:).place(x10, y50)tk.Entry(window_sign_up, textvariablenew_pwd, show*).place(x150, y50)# 重复密码变量及标签、输入框new_pwd_confirm tk.StringVar()tk.Label(window_sign_up, text请再次输入密码:).place(x10, y90)tk.Entry(window_sign_up, textvariablenew_pwd_confirm, show*).place(x150, y90)# 确认注册按钮及位置bt_confirm_sign_up tk.Button(window_sign_up, text确认注册,commandsigntowcg)bt_confirm_sign_up.place(x150, y130)# 退出的函数
def usr_sign_quit():window.destroy()# 登录 注册按钮
bt_login tk.Button(window, text登录, commandusr_log_in)
bt_login.place(x140, y150)
bt_logup tk.Button(window, text注册, commandusr_sign_up)
bt_logup.place(x210, y150)
bt_logquit tk.Button(window, text退出, commandusr_sign_quit)
bt_logquit.place(x280, y150)
# 主循环
window.mainloop()import tkinter as tk # 使用Tkinter前需要先导入
import re# 第1步,实例化object,建立窗口window
window tk.Tk()# 第2步,给窗口的可视化起名字
window.title(身份证号码查询)# 第3步,设定窗口的大小(长 * 宽)
window.geometry(700x500)# 第4步,在图形界面上设定标签
l tk.Label(window, text身份证号验证, font(宋体, 30), width40, height2)
l1 tk.Label(window, text身份证号:, font(Arial, 16), width40, height2)# 第5步,放置标签
l.place(x-80, y0, anchornw)
l1.place(x-100, y80, anchornw)# 第4步,在图形界面上设定输入框控件entry框并放置
e tk.Entry(window, showNone, font(Arial, 20),)
e.place(x200, y90, anchornw)# 第5步,定义两个触发事件时的函数check和delete
def check(): # 按钮检查对应的函数t.delete(1.0, end)IDcard e.get()if len(IDcard) ! 18:var 号码: IDcard \n身份证号码位数不对!\n错误的身份证号码.\n请重新输入!\nelse:IDcard_add IDcard[0:6] # 身份证前6位,对应归属地IDcard_birth IDcard[6:14] # 身份证中间8位,对应出生日期IDcard_sex IDcard[14:17] # 身份证15,,16,17位,对应性别area {11: 北京, 12: 天津, 13: 河北, 14: 山西, 15: 内蒙古, 21: 辽宁,22: 吉林, 23: 黑龙江, 31: 上海, 32: 江苏, 33: 浙江, 34: 安徽,35: 福建, 36: 江西, 37: 山东, 41: 河南, 42: 湖北,43: 湖南,44: 广东, 45: 广西, 46: 海南, 50: 重庆, 51: 四川, 52: 贵州,53: 云南, 54: 西藏, 61: 陕西, 62: 甘肃, 63: 青海, 64: 宁夏,65: 新疆, 71: 台湾, 81: 香港, 82: 澳门, 91: 国外}# 地区校验if IDcard[0:2] not in area.keys():var 号码: IDcard \n身份证地区非法!\n错误的身份证号码\nelse:year IDcard_birth[0:4] # 出生年份month IDcard_birth[4:6] # 出生月份day IDcard_birth[6:8] # 出生日# 出生日期的合法性检查# 闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]# |[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))# 平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]# |[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))if (int(year) % 4 0 or (int(year) % 100 0 and int(year) % 4 0)):ereg re.compile([1-9][0-9]{5}((19[0-9]{2})|(20[0-1][0-8]))((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$) # //闰年出生日期的合法性正则表达式else:ereg re.compile([1-9][0-9]{5}((19[0-9]{2})|(20[0-1][0-8]))((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$) # //平年出生日期的合法性正则表达式# //测试出生日期的合法性if (re.match(ereg, IDcard)):IDcard_check IDcard[17] # 身份证最后一位W [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 逐位权数IDcard_CHECK [1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2] # 身份证检验位IDcard_sum 0 # 定义累加和for i in range(0, 17):IDcard_sum IDcard_sum int(IDcard[i]) * W[i] # 逐位加权求和IDcard_Check IDcard_sum % 11 # 取余数if IDcard_check ! IDcard_CHECK[IDcard_Check]: # 和检验位对比var 号码: IDcard \n身份证号码校验错误!\n错误的身份证号码\nelse:if int(IDcard_sex) % 2 0:var 正确的身份证号码! \n 号码: IDcard \n地区: area[IDcard[0: 2]] \\n生日: year 年 month 月 day 日 \n 性别:女\nelse:var 正确的身份证号码! \n 号码: IDcard \n地区: area[IDcard[0: 2]] \\n生日: year 年 month 月 day 日 \n性别:男 \nelse:var 号码: IDcard \n身份证号码出生日期超出范围或含有非法字符!\n错误的身份证号码\nt.insert(insert, var) # 显示输出e.delete(0, end)# 第6步,创建并放置两个按钮分别触发两种情况
b1 tk.Button(window, text检查, width10, height2, command check)
b1.place(x550, y80, anchornw)# 第7步,创建并放置一个多行文本框text用以显示
t tk.Text(window, font(宋体, 20), width38, height8)
t.place(x100, y210, anchornw)# 第8步,主窗口循环显示
window.mainloop() 运行结果展示
1 登录 “浔川身份证号码查询” 2 查询身份证 文章转载自: http://www.morning.qnpyz.cn.gov.cn.qnpyz.cn http://www.morning.rgqnt.cn.gov.cn.rgqnt.cn http://www.morning.hous-e.com.gov.cn.hous-e.com http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.jpbky.cn.gov.cn.jpbky.cn http://www.morning.kyhnl.cn.gov.cn.kyhnl.cn http://www.morning.dgng.cn.gov.cn.dgng.cn http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn http://www.morning.nnjq.cn.gov.cn.nnjq.cn http://www.morning.dnydy.cn.gov.cn.dnydy.cn http://www.morning.pwdgy.cn.gov.cn.pwdgy.cn http://www.morning.rjynd.cn.gov.cn.rjynd.cn http://www.morning.rgpsq.cn.gov.cn.rgpsq.cn http://www.morning.lbhck.cn.gov.cn.lbhck.cn http://www.morning.xuejitest.com.gov.cn.xuejitest.com http://www.morning.ylsxk.cn.gov.cn.ylsxk.cn http://www.morning.qtkfp.cn.gov.cn.qtkfp.cn http://www.morning.wrlqr.cn.gov.cn.wrlqr.cn http://www.morning.hlnys.cn.gov.cn.hlnys.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.lxjxl.cn.gov.cn.lxjxl.cn http://www.morning.pbmkh.cn.gov.cn.pbmkh.cn http://www.morning.mprpx.cn.gov.cn.mprpx.cn http://www.morning.hmnhp.cn.gov.cn.hmnhp.cn http://www.morning.ttrdr.cn.gov.cn.ttrdr.cn http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn http://www.morning.bzpwh.cn.gov.cn.bzpwh.cn http://www.morning.gwxsk.cn.gov.cn.gwxsk.cn http://www.morning.nlgmr.cn.gov.cn.nlgmr.cn http://www.morning.ftntr.cn.gov.cn.ftntr.cn http://www.morning.rrcxs.cn.gov.cn.rrcxs.cn http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn http://www.morning.whpsl.cn.gov.cn.whpsl.cn http://www.morning.qtltg.cn.gov.cn.qtltg.cn http://www.morning.pdghl.cn.gov.cn.pdghl.cn http://www.morning.lstmg.cn.gov.cn.lstmg.cn http://www.morning.hrnrx.cn.gov.cn.hrnrx.cn http://www.morning.mjkqj.cn.gov.cn.mjkqj.cn http://www.morning.lzdbb.cn.gov.cn.lzdbb.cn http://www.morning.swyr.cn.gov.cn.swyr.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.ptqpd.cn.gov.cn.ptqpd.cn http://www.morning.wqpr.cn.gov.cn.wqpr.cn http://www.morning.yhywr.cn.gov.cn.yhywr.cn http://www.morning.tklqs.cn.gov.cn.tklqs.cn http://www.morning.tqklh.cn.gov.cn.tqklh.cn http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn http://www.morning.ydtdn.cn.gov.cn.ydtdn.cn http://www.morning.dblgm.cn.gov.cn.dblgm.cn http://www.morning.qxkjy.cn.gov.cn.qxkjy.cn http://www.morning.lcqrf.cn.gov.cn.lcqrf.cn http://www.morning.bpmns.cn.gov.cn.bpmns.cn http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn http://www.morning.ctfh.cn.gov.cn.ctfh.cn http://www.morning.rdzgm.cn.gov.cn.rdzgm.cn http://www.morning.wdhhz.cn.gov.cn.wdhhz.cn http://www.morning.wfmqc.cn.gov.cn.wfmqc.cn http://www.morning.kdbbm.cn.gov.cn.kdbbm.cn http://www.morning.ggxbyhk.cn.gov.cn.ggxbyhk.cn http://www.morning.nbgfk.cn.gov.cn.nbgfk.cn http://www.morning.zpyh.cn.gov.cn.zpyh.cn http://www.morning.byshd.cn.gov.cn.byshd.cn http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn http://www.morning.muzishu.com.gov.cn.muzishu.com http://www.morning.xhqr.cn.gov.cn.xhqr.cn http://www.morning.nfbnl.cn.gov.cn.nfbnl.cn http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn http://www.morning.mxnhq.cn.gov.cn.mxnhq.cn http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn http://www.morning.hqsnt.cn.gov.cn.hqsnt.cn http://www.morning.fbmjw.cn.gov.cn.fbmjw.cn http://www.morning.gjcdr.cn.gov.cn.gjcdr.cn http://www.morning.cwqpl.cn.gov.cn.cwqpl.cn http://www.morning.bbxbh.cn.gov.cn.bbxbh.cn http://www.morning.fyxr.cn.gov.cn.fyxr.cn http://www.morning.ljzss.cn.gov.cn.ljzss.cn http://www.morning.ghjln.cn.gov.cn.ghjln.cn