身份证类

一、身份证号处理

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

第一种方法:

#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('身份证校验位错误!')

  

原文地址:https://www.cnblogs.com/cnn-ljc/p/12713281.html