身份证号码中的秘密

7-10位代表身份证持有人的出生年份;

11-12位代表身份证持有人的出生月份;

13-14位代表身份证持有人的出生当月日期;

15-18位代表身份证持有人在当地的顺序码,其中奇数为男、偶数为女

subString(初始位置的下标,终点位置的下标)

object Test_1125 {
  def main(args: Array[String]): Unit = {
    val id = "42032220080903332x"
    //1.生日是?
    //字符串截取
    val birthday = id.substring(10, 14) //字符串截取下标
    println(s"生日是:${birthday}")

    //2.哪一年出生的
    val year = id.substring(6, 10)
    println(s"生日是:${year}")
    //3.性别:倒数第二位
    //如果是偶数:女生   如果是奇数:boy
    val gender = id.substring(16, 17)
    //val gender=id(16)
    if (gender.toInt % 2 == 0) {
      println("性别是:女生")
    }
    else {
      println("性别是:男生")
    }

    //4.前两位表示省份
    val province = id.substring(0, 2).toInt
    val m1 = Map((41, "河南"), (42, "湖北"), (43, "湖南"), (44, "广东"))
    println(s"籍贯是:${m1.get(province)}")
  }
      //      if(province==42) 

 }

输出如下

身份证号码中包含了很多的信息,可以通过身份证号码得到以下信息: 1. 姓名:身份证号码中的第一个字符到第十七个字符表示身份证持有人的姓名,其中最后一位可能是数字或者字母X,表示身份证号码的校验位。 2. 出生日期:身份证号码中的第七个字符到第十四个字符表示身份证持有人的出生日期,格式为年月日。 3. 性别:身份证号码中的第十五个字符表示身份证持有人的性别,奇数表示男性,偶数表示女性。 4. 地址码:身份证号码中的第十七个字符到第十八个字符表示身份证持有人所在的行政区划代码。 5. 校验码:身份证号码中的最后一位是校验码,用于检验身份证号码的有效性。 在Python中,可以通过正则表达式和字符串切片等方式提取身份证号码中的各个信息。例如: ```python import re id_card = '110101199003076677' # 提取姓名 name = id_card[0:6] print('姓名:', name) # 提取出生日期 birthday = id_card[6:14] print('出生日期:', birthday) # 提取性别 gender = int(id_card[16]) if gender % 2 == 0: print('性别:女') else: print('性别:男') # 提取地址码 address_code = id_card[17:19] print('地址码:', address_code) # 校验身份证号码的有效性 pattern = re.compile(r'^\d{17}[\dX]$') if not pattern.match(id_card): print('身份证号码格式错误!') else: # 计算校验码 factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] sum = 0 for i in range(17): sum += int(id_card[i]) * factor[i] if check_code[sum % 11] == id_card[17]: print('身份证号码有效!') else: print('身份证号码无效!') ``` 以上代码演示了如何从身份证号码中提取姓名、出生日期、性别和地址码,并校验身份证号码的有效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值