@laowang123
2017-04-09T05:35:52.000000Z
字数 2345
阅读 434
# -*- coding:utf-8 -*-
######小组信息############
#组长:陈可可
#成员名单:唐涛、王少青、郑琪
###########题目###############
'''
1.检验单个身份证号码是否合法;
2.从文件读取至少十个身份证号码并校验(每一行是一个身份证)
3.随机生成身份证号码并校验(可选,需要使用random模板)
'''
###########代码###############
# -*- coding:utf-8 -*-
IDnum=raw_input('请输入身份证号码,数字间用逗号隔开:')
datas=IDnum.split(',')
nums=[int(x) for x in datas]
coes=[]
for i in range(1,18):
coe=(2**(18-i))%11
coes.append(coe)
s,n=0,len(coes)
for j in range(n):
s+=int(nums[j])*int(coes[j])
rem=s%11
rems=[0,1,2,3,4,5,6,7,8,9,10]
codes=[1,0,x,9,8,7,6,5,4,3,2]
if nums[17]==int(codes[rem]):
print '合法身份证号码'
else:
print '非法身份证号码'
第1次综合训练报告
题目:校验身份证号码真伪
小 组:第5组
姓 名:陈可可 王少青 唐涛 郑琪
专 业:安全工程
班 级:安全16-4班
2017 年 4 月 6 日
目 录
1 摘要 1
2 设计思路 1
3 运行结果 1
3.1 使用说明 1
3.2 运行结果截屏及说明 2
4 执行过程 2
5 总结 2
6 代码 2
题目 校检身份证号码真伪
1 摘要
能对单个代码进行检验,并从文件读取至少十个身份证号码并校检(每一行是一个身份证号码),能随机生成身份证号码并校检。涉及到字符串的拆分、列表的添加操作和、循环和索引、if语句的使用
2 设计思路
从键盘录入身份证号码,数字间以逗号相隔,用split函数对其进行分割,并形成新的列表。列表中存储的是身份证号的每一位数字,用所给的求系数的函数表达式,计算出每个身份证数字对应的系数,用列表的添加操作再形成系数列表。用列表索引的方法对两个列表的对应项求乘积,再求和对11求余,用得到的余数和给定的校检码进行对比,相同的为合法身份证号码,否则为非法身份证号码。
3 运行结果
输入待检验的身份证号码 512304186001152123 显示非法身份证号码
3.1 使用说明
(1)打开程序
(2)进入选择页面:
随意输入一个18位身份证号码,数字间用逗号隔开
(3)进行校检
(4)显示结果
3.2 运行结果及截图
图1
4 执行过程
1 # -*- coding:utf-8 -*-
2 IDnum=raw_input('请输入身份证号码,数字间用逗号隔开:')
# 从键盘输入需要检验的身份证号码
3 datas=IDnum.split(',') # 将身份证号分割成单个数字,赋给变量datas
4 nums=[int(x) for x in datas] # 将datas的数据转换成整数型数据,储存在列表nums中
5 coes=[] # 定义空列表nums
6 for i in range(1,18): # 循环变量i取值1~17,循环17次
7 coe=(2**(18-i))%11 # 求第i项的系数,赋给变量coe
8 coes.append(coe) # 变量coe 添加到列表coes中去
9 s,n=0,len(coes) # 给s赋初值 0,n为 coes 的元素个数
10 for j in range(n): # j 可取值0~16
11 s+=int(nums[j])*int(coes[j]) # 将nums和coes中的元素转化为整形数据,并求其乘积和
12 rem=s%11 # s对11求余
13 rems=[0,1,2,3,4,5,6,7,8,9,10] # 定义余数列表
14 codes=[1,0,x,9,8,7,6,5,4,3,2] # 定义校检码列表
15 if nums[17]==int(codes[rem]): # 判断最后一位身份证号是否匹配校检码
16 print '合法身份证号码' # 符合,输出合法
17 else: # 不符合
18 print '非法身份证号码' # 输出非法身份证号
5 总结
不能实现对身份证号码中含有x的检验,没有认识到列表中的数据类型是字符串,使得在求乘积的时候出错,不能正确的求出余数。两个列表循环的方法,即检索法和zip,不会运用,导致两个列表的求各项乘积和的过程中出现很多问题
6 代码
评分统计
(1、不带括号的红字根据实际情况修改,带括号的红字可以删除!)
表1 安全16-1班 第1小组 第1次综合训练(被投票情况)
序号 姓名 班级 投票 评论
1 张三 安全16-2 B xxx
2
指导教师投票及评论 B xxx
表2 安全16-1班 第1小组 第1次综合训练(得分情况)
(a)李四投票及得分
第x1组 老师评分 第x2组 老师评分 第x3组 老师评分 得分
(对x1组投票) (对x1组投票) (对x2组投票) (对x2组投票) (对x3组投票) (对x3组投票)
(b)张三投票及得分
第x1组 老师评分 第x2组 老师评分 第x3组 老师评分 得分
(对x1组投票) (对x1组投票) (对x2组投票) (对x2组投票) (对x3组投票) (对x3组投票)
(c)王五投票及得分
第x1组 老师评分 第x2组 老师评分 第x3组 老师评分 得分
(对x1组投票) (对x1组投票) (对x2组投票) (对x2组投票) (对x3组投票) (对x3组投票)
(d)赵六投票及得分
第x1组 老师评分 第x2组 老师评分 第x3组 老师评分 得分
(对x1组投票) (对x1组投票) (对x2组投票) (对x2组投票) (对x3组投票) (对x3组投票)
程序执行过程:
0、程序从第19行开始执行
1、19~21行使用print输出一句名言或诗词,要使用一对单引号将诗词括起来!