刚接触python 求一个简单问题的解答

输入身份证号码,要求编写程序实现:
(1)身份证长度必须是18位,前17位必须是数字,否则出错提示。
(2)输出出生日期和性别信息。
(3)火车票上会对身份证号的关键信息用替代,比如将8位的出生日期用8个替换,实现关键信息的遮盖。


s = input('输入一个18位身份证号:')

if len(s)==18 and s[0:17].isdigit():
    print('{}年{}月{}日,性别{}'.format(s[6:10],s[10:12],s[12:14],['女','男'][int(s[16])%2]))
    s = s[0:6] + '*'*8 + s[14:]
    print('将8位的出生日期用8个*替换:',s)
else:
    print('错误!')

或者

import re
while True:
    s = input('输入一个18位身份证号:')
    if re.match(r'^[1-9]\d{16}[\dxX]$',s):
        y = int(s[6:10])
        m = int(s[10:12])
        d = int(s[12:14])
        p = 31 if m in (1,3,5,7,8,10,12) else 30
        if m==2:
            p = 29 if y%4==0 and y%100!=0 or y%400==0 else 28
        if 1<=m<=12 and 1<=d<=p:
            break
    print('错误,请重新输入!')
print('{}年{}月{}日,性别{}'.format(s[6:10],s[10:12],s[12:14],['女','男'][int(s[16])%2]))
s = s[0:6] + '*'*8 + s[14:]
print('将8位的出生日期用8个*替换:',s)

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img