题目:

 一、二选一
1、每个区生成1个符合身份证规则的身份证号码
2、随机生成10个符合身份证规则的身份证号码
二、要求:
1、身份证属于南京市
2、出生日期为1980-1-1 至 2019-8-1的人
三、扫盲:
320100 南京市
320102 玄武区
320104 秦淮区
320105 建邺区
320106 鼓楼区
320111 浦口区
320113 栖霞区
320114 雨花台区
320115 江宁区
320116 六合区
320117 溧水区
320118 高淳区
1、前1、2位数字表示江苏省的代码;
2、第3、4位数字表示南京市的代码;
3、第5、6位数字表示所在区(县、自治县、县级市)的代码;
4、第7—14位数字表示出生年、月、日;
5、第15、16位数字表示所在地的派出所的代码;
6、第17位数字表示性别(奇数表示男性,偶数表示女性);
7、第18位数字是校检码:校检码可以是0—9的数字,可以以是x。X是罗马数字的10
四、重点说明:
第18位的计算:
1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,看余数是多少?
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。(即余数0对应1,余数1对应0,余数2对应X...)

小余的答案:

 #!/opt/python27/bin/python
# -*- coding:utf-8 -*-
# author:why import random
'''
一、题目:
二选一
1、每个区生成1个符合身份证规则的身份证号码
2、随机生成10个符合身份证规则的身份证号码
二、要求:
1、身份证属于南京市
2、出生日期为1980-1-1 至 2019-8-1的人
三、扫盲:
320100 南京市 320102 玄武区 320104 秦淮区 320105 建邺区 320106 鼓楼区 320111 浦口区 320113 栖霞区 320114 雨花台区 320115 江宁区 320116 六合区 320117 溧水区 320118 高淳区
1、前1、2位数字表示江苏省的代码;
2、第3、4位数字表示南京市的代码;
3、第5、6位数字表示所在区(县、自治县、县级市)的代码;
4、第7—14位数字表示出生年、月、日;
5、第15、16位数字表示所在地的派出所的代码;
6、第17位数字表示性别(奇数表示男性,偶数表示女性);
7、第18位数字是校检码:校检码可以是0—9的数字,可以以是x。X是罗马数字的10
四、重点说明:
第18位的计算:
1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,看余数是多少?
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。(即余数0对应1,余数1对应0,余数2对应X...)
''' class idGener:
def __init__(self):
id16 = ['','','','','','','','','','','','']
moduId = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] #第一位到第十七位的系数
id18Rema ={'':'','':'','':'X','':'','':'','':'','':'','':'','':'','':'','':''}
self.id16 = id16
self.moduId = moduId
self.id18Rema = id18Rema def id16Gener(self,id):
'''
取值,1-6位
:param id: 1-12 时取 固定值,其他取随机
:return: str 320102
'''
if id <= len(self.id16) and id > 0:
resId16 = self.id16[id-1]
else:
resId16 =random.sample(self.id16,1)
resId16 = resId16[0]
return resId16 def id714Gener(self):
'''
取值,7-14位
:return:
'''
id710 = random.sample(range(1980,2020),1)[0]
id1112 = random.sample(range(01,13),1)[0]
if id1112 == 02:# 判断闰月
if id710%4 == 0 and id710%100 != 0 :
id1314 = random.sample(range(01,29),1)[0]
else:
id1314 = random.sample(range(01, 30), 1)[0]
elif id1112 in (1,3,5,7,8,10,12):#31天
id1314 = random.sample(range(01,32),1)[0]
else:
id1314 = random.sample(range(01, 31),1)[0]
if id1112 < 10:
id1112Str = ''+str(id1112)
else:
id1112Str = str(id1112)
if id1314 <10:
id1314Str = ''+str(id1314)
else:
id1314Str = str(id1314)
return str(id710)+id1112Str+id1314Str def id1517Gener(self):
'''
随机生成0-9
:return: str
'''
id710 = random.sample(range(0, 10), 1)[0]
return str(id710) def id18Gener(self):
'''
1.求和取余
2.判断第18位
:return: 返回18位身份证
'''
id117Str = self.id16Gener(111)+self.id714Gener()+self.id1517Gener()+self.id1517Gener()+self.id1517Gener()
id117List = list(map(int, id117Str)) #转list
moduSumTol = 0
for i in range(0,len(id117List)):
moduSum = id117List[i] * self.moduId[i]
moduSumTol += moduSum
remainId = moduSumTol % 11
id18Str = self.id18Rema[str(remainId)]
id118Str = id117Str + id18Str
print id118Str if __name__ == '__main__':
id = idGener()
id.id18Gener()

小敏的答案:

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : IdCard.py
# @Author: min
# @Date : 2019/9/5 '''
一、题目: 二选一
1、每个区生成1个符合身份证规则的身份证号码
2、随机生成10个符合身份证规则的身份证号码 二、要求: 1、身份证属于南京市
2、出生日期为1980-1-1 至 2019-8-1的人 三、扫盲: 1、前1、2位数字表示江苏省的代码;
2、第3、4位数字表示南京市的代码;
3、第5、6位数字表示所在区(县、自治县、县级市)的代码;
4、第7—14位数字表示出生年、月、日;
5、第15、16位数字表示所在地的派出所的代码;
6、第17位数字表示性别(奇数表示男性,偶数表示女性);
7、第18位数字是校检码:校检码可以是0—9的数字,可以以是x。X是罗马数字的10 四、重点说明: 第18位的计算:
1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,看余数是多少?
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。(即余数0对应1,余数1对应0,余数2对应X...)
'''
import random def creatIdCard():
citylist = [320100, 320102, 320104, 320105, 320106, 320111, 320113, 320114, 320115, 320116, 320117, 320118]
city = random.choice (citylist)
year = random.randint (1980, 2019)
month = random.randint (1, 12)
if month in (1, 3, 5, 7, 8, 10, 12):
day = 31
elif month in (4, 6, 9, 11):
day = 30
elif month == 2:
if year % 400 == 0:
day = 29
else:
day = 28
police = random.randint (10, 99)
sex = random.randint (1, 9)
seventeen_str = str (city) + str (year) + str (month) + str (day) + str (police) + str (sex)
seventeen_list = list (map (int, seventeen_str))
stlist = []
num = 0
for i in range (16):
stlist.append (seventeen_list[i])
secret = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] for i in range (16):
num += stlist[i] * secret[i]
remainder = num % 11
eigthteen = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2] result = str (city) + str (year) + str (month) + str (day) + str (police) + str (sex) + str (eigthteen[remainder])
print result if __name__ == '__main__':
creatIdCard ()

四爷的答案:

 # encoding: utf-8

 import time
import random ary = []
ary1 = []
def regiun():
#生成身份证前六位
#列表里面的都是一些地区的前六位号码
first_list = ['','','','','','','','','','','',''] a1=(1980,1,1,0,0,0,0,0,0) #设置开始日期时间元组(1980-01-01 00:00:00)
a2=(2019,8,01,23,59,59,0,0,0) #设置结束日期时间元组(2019-08-01 23:59:59)
start=time.mktime(a1) #生成开始时间戳
end=time.mktime(a2) #生成结束时间戳 #随机生成日期字符串
for i in range(10):
str1 = ""
for j in range(3): #生成三位随机数字
ch = chr(random.randrange(ord(''), ord('') + 1))
str1 += ch
first = random.choice(first_list) #前六位,随机取一个
t=random.randint(start,end) #在开始和结束时间戳中随机取出一个
date_touple=time.localtime(t) #将时间戳生成时间元组
date=time.strftime("%Y%m%d",date_touple) #将时间元组转成格式化字符串(19760521)
ary.append(first + date+ str1)
#print ary for k in range(0, len(ary)):
count = 0
weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 权重项
checkcode = {'':'','':'','':'X','':'','':'','':'','':'','':'','':'','':'','':''} # 校验码对应的最后一位
ary2 = ary[k]
for m in range(0,len(ary2)): count = count + int(ary2[m]) * weight[m]
id = checkcode[str(count%11)] # 算出最后一位校验码
ary[k] = ary[k] + id
# print ary
return ary print regiun()

python练习题(三)的更多相关文章

  1. Python练习题 005:三个数字由大到小排序输出

    [Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...

  2. Python练习题2

    如果真的想学精,学什么都不是好学的,如果真的想把Python学的出神入化,几乎自己想做什么都可以,就要下定恒心,坚持下去. 接下来继续更新Python练习题2,通过更新前一部的练习题让自己也学到了不少 ...

  3. Python练习题 032:Project Euler 004:最大的回文积

    本题来自 Project Euler 第4题:https://projecteuler.net/problem=4 # Project Euler: Problem 4: Largest palind ...

  4. Python练习题 023:比后面的人大2岁

    [Python练习题 023] 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁.问第4个人岁数,他说比第3个人大2岁.问第三个人,又说比第2人大两岁.问第2个人,说比第一个人大两岁.最后 问 ...

  5. Python练习题 020:累积累加

    [Python练习题 020] 求1+2!+3!+...+20!的和 -------------------------------------------------- 据说这题是"累积累 ...

  6. Python练习题 017:三支乒乓球队出赛名单

    [Python练习题 017] 两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比.请编程序找 ...

  7. Python练习题 009:水仙花数

    [Python练习题 009] 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数& ...

  8. Python练习题 001:4个数字求不重复的3位数

    听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧. ----------------------------------------------------------------- ...

  9. 学习Python的三种境界

    前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...

  10. selenium webdriver (python) 第三版

    感谢 感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不出第三版了,也是你们的鼓励,让我继续学习整理本文档. 感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙 ...

随机推荐

  1. Collectd 和 InfluxDB 的部署和使用

    更新软件包 $ sudo apt-get update$ sudo apt-get upgrade$ sudo reboot 安装influxdb hanwei@ubuntu-lab:~$ wget ...

  2. [bzoj4345][POI2016]Korale_堆_贪心_线段树_dfs

    bzoj4345 POI2016 Korale 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=4345 数据范围:略. 题解: 由于$k$的范围问 ...

  3. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...

  4. LeetCode 230. 二叉搜索树中第K小的元素(Kth Smallest Element in a BST)

    230. 二叉搜索树中第K小的元素 230. Kth Smallest Element in a BST 题目描述 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的 ...

  5. Python35之包的创建

    包(package) 一.创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字 二.在文件夹中创建一个__init__.py的模块文件,内容可以为空 三将相关的模块放入文件夹中 这样就相当于创建 ...

  6. PAT(B) 1079 延迟的回文数(Java)

    题目链接:1079 延迟的回文数 (20 point(s)) 题目描述 给定一个 k+1 位的正整数 N,写成 a​k​​⋯a​1​​a​0​​ 的形式,其中对所有 i 有 0≤a​i​​<10 ...

  7. 《Java Web开发实战》——Java工程师必备干货教材

    一年一度毕业季,又到了简历.offer漫天飞,失望与希望并存的时节.在IT行业,高校毕业生求职时,面临的第一道门槛就是技能与经验的考验,但学校往往更注重学生的理论知识,忽略了对学生实践能力的培养,因而 ...

  8. Luogu5307 [COCI2019] Mobitel 【数论分块】【递推】

    题目分析: 对于向上取整我们总有,$\lceil \frac{\lceil \frac{n}{a} \rceil}{b} \rceil = \lceil \frac{n}{a*b} \rceil$这个 ...

  9. hdu1501 记忆化搜索。。。

    Problem Description Given three strings, you are to determine whether the third string can be formed ...

  10. 在论坛中出现的比较难的sql问题:33(递归 连续日期问题 )

    原文:在论坛中出现的比较难的sql问题:33(递归 连续日期问题 ) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得有必 ...