输入“身份证”时,分别输出对应的信息。 输入为“查询”,则再输入一个城市名,根据城市名判定持证人是否为敏感地区常住人或是敏感地区出生者,输出“持证人与某某市有关联”或“持证人与某某市无关联”,并输出持证有居住的省、市、区(县)或市、区(居住于直辖市时)。 输入其他信息时,输出“输入错误”。 根据提示,在右侧编辑器补充代码,模拟生成身份信息身份证及查询的功能
时间: 2024-03-30 10:38:20 浏览: 17
好的,以下是根据您的要求编写的程序:
```python
import random
# 随机生成一个有效的身份证号码
def generate_id_number():
# 随机生成前6位地区编码
region_code = str(random.randint(110000, 659004))
# 随机生成出生日期
birth_year = str(random.randint(1900, 2021))
birth_month = str(random.randint(1, 12)).zfill(2)
birth_day = str(random.randint(1, 28)).zfill(2)
birth_date = birth_year + birth_month + birth_day
# 随机生成顺序码
order_code = str(random.randint(1, 999)).zfill(3)
# 计算校验码
id_number = region_code + birth_date + order_code
weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code_map = {0: "1", 1: "0", 2: "X", 3: "9", 4: "8", 5: "7", 6: "6", 7: "5", 8: "4", 9: "3", 10: "2"}
total = 0
for i in range(17):
total += int(id_number[i]) * weight_factor[i]
check_code = check_code_map[total % 11]
id_number += check_code
return id_number
# 校验身份证号码是否有效
def check_id_number(id_number):
if len(id_number) != 18:
return False
weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code_map = {0: "1", 1: "0", 2: "X", 3: "9", 4: "8", 5: "7", 6: "6", 7: "5", 8: "4", 9: "3", 10: "2"}
total = 0
for i in range(17):
total += int(id_number[i]) * weight_factor[i]
check_code = check_code_map[total % 11]
return check_code == id_number[-1]
# 查询持证人是否与某城市有关联
def check_city(id_number, city):
if not check_id_number(id_number):
return "身份证号码无效"
region_code = id_number[:6]
if region_code.startswith("11") or region_code.startswith("12") or region_code.startswith("13"):
province = region_code[:2] + "0000"
else:
province = region_code[:2] + "0000"
city = region_code[:4] + "00"
if province == city:
return "持证人与{}有关联".format(city)
else:
return "持证人与{}无关联".format(city)
# 主程序
while True:
command = input("请输入您要查询的内容(身份证、查询):")
if command == "身份证":
id_number = generate_id_number()
print("随机生成的身份证号码为:", id_number)
elif command == "查询":
city = input("请输入您要查询的城市名:")
id_number = input("请输入要查询的身份证号码:")
result = check_city(id_number, city)
print(result)
else:
print("输入错误,请重新输入!")
```
运行程序后,您可以输入“身份证”来生成一个随机的身份证号码,也可以输入“查询”来查询持证人是否与某城市有关联。如果输入其他内容,则会提示“输入错误,请重新输入!”。