用Python校验身份证号码真伪

用Python校验身份证号码真伪

想挽留 发布于 2021-11-26 字数 1764 浏览 824 回复 1

我是初学者,我们学校今年开的这门课,这是留的作业;

我将代码写完了,但是在读文件的时候,不知道什么原因总报错

我的代码如下:

#-*- coding: UTF-8 -*-
import random

yushu=[x for x in range(0,11)] 
ma=['1','0','X','9','8','7','6','5','4','3','2','1']

def yanzheng(nid):

	dicma=dict(zip(yushu,ma))

	sum=0

	for x,y in enumerate(nid[:-1]):

		sum+=((2**(18-x-1))%11)*int(y) #17位对应系数相乘的和

	if nid[-1]==dicma[sum%11]: #校验码对照
		return '%s True'%nid
	else:
		return '%s False'%nid
def readfile(fname):
	f=open('id.txt','rb')
	for line in f.readlines():
		print  yanzheng(line.strip())
	f.close()
def randnum():
	idstr=''
	for i in range(17): #前17位随机
		idstr+=str(random.randint(0,9))

	idstr+=random.choice(ma) #最后一位从列表种随意一个,因为有X
	return idstr


if __name__=="__main__":
	nid=raw_input('Please enter your ID: ') #用户输入ID,没做任何验证
	print yanzheng(nid)  #验证身份证
	readfile('id.txt')   #从文件读出来再验证
	print yanzheng(randnum())  #随机一个在验证

错误情况如下:

但是我已经把文件都放到一个文件夹里啦,而且文件里边也有内容

请问读取文件那个部分的代码怎么改好(我不要指定那个盘,那个路径,直接在同一文件夹读取)

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悸初 2021-11-28 1 楼

import os

readfile('%s/id.txt' % os.path.split(os.path.realpath(__file__))[0])