输入身份证号码,要求编写程序实现:
(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)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!