题目:

 一、二选一
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. [转帖]负载均衡 LVS+Keepalived

    负载均衡 LVS+Keepalived https://www.cnblogs.com/jicki/p/5546862.html 改天试试 一直没搞过. 系统  CentOS 5.6 X64 物理机 ...

  2. Visual Studio 2019 离线安装方法

    1. 网址 1.1 阅读官方离线安装教程 离线安装官网 仔细阅读离线安装官网,差不多就能学会如何下载. 1.2 工作负荷和组件 ID 进入这个网址,Visual Studio 工作负荷和组件 ID,单 ...

  3. SDK的使用步骤

    SDK包括三种类型文件: (1).头文件(.h) (2).库文件(.lib) (3).动态库(.dll) 第一步:在项目目录中新建一个Libs文件夹,再在该文件夹中分别新建inc文件夹和lib文件夹, ...

  4. CSS样式三种形式222

    markdown CSS基本表现形式只有三种:标签样式.Class类样式.ID样式 标签样式: 必须与HTML标签同名.仅仅影响同名标签 Class样式:可以在任何标签中使用: class=" ...

  5. 十九、eMMC驱动框架分析

    一.MMC简介 eMMC在封装中集成了一个控制器,提供标准接口并管理Nand Flash,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间. 对于我们来说,eMMC就是在Nand ...

  6. 题解-APIO2019路灯

    problem \(\mathtt {loj-3146}\) 题意概要:一条直线上有 \(n+1\) 个点和 \(n\) 条道路,每条道路连通相邻两个点.在 \(q\) 个时刻内,每个时刻有如下两种操 ...

  7. php-获取某个文件夹下面的文件数量

    /** * 获取文件夹下文件的数量 * @param $url 传入一个url如:/apps/web * @return int 返回文件数量 */ public function getFileNu ...

  8. logback的使用和配置

    参考:https://www.cnblogs.com/warking/p/5710303.html https://www.cnblogs.com 一.logback简介 1.logback: Log ...

  9. IServiceBehavior IContractBehavior IEndpointBehavior IOperationBehavior

    using System; using System.Collections.ObjectModel; using System.Reflection; using System.ServiceMod ...

  10. Spark机器学习基础-监督学习

    监督学习 0.线性回归(加L1.L2正则化) from __future__ import print_function from pyspark.ml.regression import Linea ...