• 身份证类


    一、身份证号处理

    输入一个合法的身份证号码,计算输出出生年月日、性别、年龄(不要求校验输入的合法性)

    第一种方法:

    #18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,
    #第17位代表性别,奇数为男,偶数为女。
    #datetime.datetime.now().year
    # datetime.datetiem.now().mouth
    # datetime.datetiem.now().day
    
    import datetime
    id = input()
    year = id[6:10]
    month = id[10:12]
    day = id[12:14]
    if int(id[16]) % 2 == 0:
        sex = '女'
    if int(id[16]) % 2 == 1:
        sex = '男'
    print('你出生于{}年{}月{}日'.format(year,month,day))
    print('你今年{}周岁'.format(datetime.datetime.now().year-int(year)))
    print('你的性别为{}'.format(sex))
    

    第二种方法: 

    import datetime #导入datetime库,或使用 from datatime import *
    yearnow = datetime.datetime.now().year #可用于获得当前年份
    id1 = input()  #输入身份证号
    year = id1[6:10]  #切片获得年份
    mouth = id1[10:12] #切片获得月份
    day = id1[12:14] #切片获得天数
    gender = id1[16] #切片获得性别数值 
    if eval(gender)%2 == 0:  #整除2求余数,若为0则是偶数-女,反之则为奇数-男
        gender="女"
    else:
        gender="男"
    print("你出生于{}年{}月{}日".format(year,mouth,day))
    print("你今年{}周岁".format(int(yearnow)-int(year))) #当前年份与出生年份相减的年龄
    print("你的性别为{}".format(gender))
    

     

    二、身份证号验证

    输入一个身份证号码,校验其是否是合法的身份证号码

    ls = ( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 )
    id = input()
    sum = 0
    for i in range(17):
        sum = sum + ls[i] * int(id[i])
    if str(id[17]) == 'X':
        if sum % 11 == 2:
            print('身份证号码校验为合法号码!')
        else:
            print('身份证校验位错误!')
    elif (sum % 11 + int(id[17])) % 11 == 1:
        print('身份证号码校验为合法号码!')
    else:
        print('身份证校验位错误!')
    

      

    三、校验身份证号码并输出个人信息

    输入一个身份证号码,校验其是否是合法的身份证号码,并输出该身份证的出生年月日、性别、年龄

    import datetime
    ls = ( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 )
    id = input()
    def IDcheck(id):
        sum = 0
        for i in range(17):
            sum = sum + ls[i] * int(id[i])
        if id[17] == 'X':
            if sum % 11 == 2:
                return 1
            else:
                return 0
        elif (sum % 11 + int(id[17])) % 11 == 1:
            return 1
        else:
            return 0
    
    if IDcheck(id) == 1:
        year = id[6:10]
        month = id[10:12]
        day = id[12:14]
        if int(id[16]) % 2 == 0:
            sex = '女'
        if int(id[16]) % 2 == 1:
            sex = '男'
        print('身份证号码校验为合法号码!')
        print('出生:{}年{}月{}日'.format(year, month, day))
        print('年龄:{}'.format(datetime.datetime.now().year - int(year)))
        print('性别:{}'.format(sex))
    else:
        print('身份证校验位错误!')
    

      

  • 相关阅读:
    Codeforces1420E. Battle Lemmings 题解 动态规划
    C++使用partial_sum求前缀和
    HDU6171 Admiral 题解 折半搜索
    HDU3017 Treasure Division 题解 折半搜索
    使用re.split 按标点+空格的一种分割办法
    实现CString的Format功能,支持跨平台
    转载一篇makefile,说的很详细
    Microsoft C++ 异常: std::system_error std::thread
    源码一样,运行结果不一致的解决办法
    记录一次阿里的电话面试
  • 原文地址:https://www.cnblogs.com/cnn-ljc/p/12713281.html
Copyright © 2020-2023  润新知