python提取身份证中的生日和性别

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方法对字符串进行格式化的一个例子。

(1.){} 是一个占位符,用于在格式化字符串中插入变量值。
(2.)format 是一个内置函数,用于将格式化的字符串与变量值结合起来。它接受一个或多个变量,并根据占位符的位置将这些变量值插入到字符串中。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值