用Python校验身份证号码真伪

zhangyujia 发布于 2015/06/04 11:39
阅读 2K+
收藏 0

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

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

我的代码如下:

#-*- 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())  #随机一个在验证



错误情况如下:

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

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

加载中
0
filecache
filecache

import os

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



返回顶部
顶部