1.代码
def sfzAnalysis(idNum):
#检查身份证长度是否正确
if len(idNum)!=18:
raise ValueError("身份证号码长度不正确,请输入一个18位的身份证号码。")
#raise关键字在Python中有多种用途,主要涉及异常的抛出和错误处理
#提取出生日期
year = idNum[6:10]
month = idNum[10:12]
day = idNum[12:14]
birthday = "{}年{}月{}日".format(year,month,day)
#提取性别
gender_code = int(idNum[16])
gender = "女" if gender_code % 2 ==0 else "男"
return birthday,gender
try:
idNum = input("请输入您的身份证号码:")
birthday,gender = sfzAnalysis(idNum)
print("出生日期:",birthday)
print("性别:",gender)
except ValueError as e:
print("处理身份证号码时发生错误:",e)
2.分析:
1. 我们的身份证号码是一串18位的数字,其中包含了许多关于持有人身份的信息,比如出生日期和性别。前6位是地区码,接下来的8位是出生日期,然后是顺序码和性别码,
最后一位是校验码。性别由倒数第二位表示,奇数为男,偶数为女。
2.解析身份证号码中的出生日期,出生日期位于身份证的第7位到第14位,格式为YYYYMMDD。例如,如果身份证号码的这部分数字是19900101,则表示持有人的出生日期为1990年1月1日。
3.解析身份证号码中的性别,性别由身份证的倒数第二位(第17位)决定,如果这一位是奇数,则持有人为男性;如果是偶数,则为女性。
3.扩展
1.在Python中,try语句用来捕获和处理在执行代码块时可能发生的异常。的基本结构如下:
try:
# 尝试执行的代码块
except 异常类型:
# 如果发生异常,则执行这里的代码
finally:
# 无论是否发生异常,都会执行这里的代码(可选)(1.)try 块:在这个块中的代码是你希望正常执行的代码。如果在这个块中的代码引发了异常,执行将立即跳到 except 块(如果有的话)。
(2.)except 块:这个块用于捕获和处理异常。except 关键字后面跟着你想要捕获的异常类型。如果 try 块中的代码引发了指定的异常类型,则执行 except 块中的代码。你可以捕获多个不同的异常类型,每个类型对应一个 except 子句。
(3.)finally 块(可选):这个块中的代码无论是否发生异常都会执行。这适用于清理代码,比如关闭文件或释放资源。finally 块在 except 块之后执行,即使有 return、continue 或 break 语句。2.在Python中,raise关键字用于主动抛出一个异常。当你在程序中检测到某个错误条件时,可以使用raise来立即停止程序的执行,并抛出一个异常,这样可以避免程序继续运行可能导致更严重的问题。
(1.)raise关键字是必须的,因为它用于主动抛出异常,而不是让程序默默地处理错误或者给出一个错误提示。
(2.)ValueError是用来指定抛出的异常类型,它是一个内置的异常类型,表示“值错误”。如果你认为其他类型的异常更适合,比如IndexError或TypeError,你可以更改它。但是,你需要确保使用的异常类型与你想要表达的错误情况相匹配。3.Python中使用format方法对字符串进行格式化的一个例子。文章来源:https://www.toymoban.com/news/detail-843070.html
(1.){} 是一个占位符,用于在格式化字符串中插入变量值。
(2.)format 是一个内置函数,用于将格式化的字符串与变量值结合起来。它接受一个或多个变量,并根据占位符的位置将这些变量值插入到字符串中。文章来源地址https://www.toymoban.com/news/detail-843070.html
到了这里,关于python提取身份证中的生日和性别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!