身份证号由18位的字符组成,其中第7位至第14位是持有人的出生日期,现在需要将这8位字符全部替换成“*”以便保护持有人的隐私,请编程实现。 例如有身份证号:43060219990515401X,替换之后为:430602********401X
时间: 2023-07-23 16:36:36 浏览: 211
好的,我可以帮你编写一个Python程序来实现这个功能。你只需要输入身份证号码,程序就会自动将其中的出生日期部分替换成“*”。
```python
id_card = input("请输入身份证号码:")
id_card = id_card[:6] + "********" + id_card[14:]
print("替换后的身份证号码为:", id_card)
```
运行程序后,你可以输入你的身份证号码,程序会将其中的出生日期部分替换成“*”,然后输出替换后的身份证号码。注意,这个程序只能处理18位的身份证号码,如果输入的身份证号码不足18位或超过18位,程序会抛出异常。
相关问题
输入一个身份证号,输出性别及出生日期。 输入格式: 输入一个二代身份证号(18位) 输出格式: 输出性别及出生日期。 输入样例1: 在这里给出一组输入。例如: 110101200104057856 输出样例1: 在这里给出相应的输出。例如: 男 出生于2001年04月05日 输入样例2: 在这里给出一组输入。例如: 110108991112289 输出样例2: 在这里给出相应的输出。例如: 输入的身份证号位数错
题目描述
输入一个身份证号,输出性别及出生日期。
输入格式:
输入一个二代身份证号(18位)
输出格式:
输出性别及出生日期。
输入样例1:
110101200104057856
输出样例1:
男 出生于2001年04月05日
输入样例2:
110108991112289
输出样例2:
输入的身份证号位数错误
解题思路
根据身份证号的规则,可以将身份证号分为以下几个部分:
- 前6位:行政区划代码,表示身份证持有人所在的省市县区。
- 7~14位:出生年月日,前4位表示年份,接下来2位表示月份,最后2位表示日期。
- 15~17位:顺序码,表示在当天出生的人中的序号,奇数为男性,偶数为女性。
- 18位:校验码,用于检验身份证号的正确性。
根据这些规则,可以实现以下算法:
- 首先判断输入的身份证号是否为18位,如果不是则输出“输入的身份证号位数错误”。
- 接着判断身份证号的前6位是否为合法的行政区划代码,可通过查询相关数据表来实现。
- 然后截取身份证号的7~14位,解析出出生年月日,并输出。
- 最后根据身份证号的倒数第二位判断性别,奇数为男性,偶数为女性,并输出。
需要注意的是,由于输入的身份证号是字符串形式,因此需要将其转换为数字形式进行计算和比较。同时,输出日期时需要注意格式化输出,比如输出“2001年04月05日”而不是“20010405”。
参考代码
C++ 代码
用python 身份证的秘密
身份证号码中包含了很多的信息,可以通过身份证号码得到以下信息:
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('身份证号码无效!')
```
以上代码演示了如何从身份证号码中提取姓名、出生日期、性别和地址码,并校验身份证号码的有效性。
阅读全文