大家来看看,这python代码还可以再优化吗?
本帖最后由 salge 于 2021-7-5 15:04 编辑大家好,求助一下,我现在学习python语言,从0开始,全都是看书学习的知识,没有报课程和视频.
看看以下代码还有优化的地方吗?相互学习学习.谢谢大家.继续努力.
大家猜猜这是用来做什么的;www
https://static.52pojie.cn/static/image/hrline/1.gif
def my_ID():
IDcode1=input()
IDcode=IDcode1.replace("x","X")
if not(len(IDcode)==18):
print("Error!")
return 0
b=["1","2","3","4","5","6","7","8","9","0","X"]
for i in IDcode:
if not(i in b):
print("Error!")
return 0
c=
a=0
sum=0
for i in IDcode[:17]:
for d in c:
sum=sum+(d*int(i))
a=a+1
e=sum%11
f="10X98765432"
if not(f==IDcode[-1:]):
print("Error!")
return 0
else:
print("OK!")
return 0
my_ID()
while my_ID()==0:
my_ID()
https://static.52pojie.cn/static/image/hrline/1.gif
新手可以看看这代码,很有帮助.都是一些基本知识.
看起来是跟身份证号码相关,具体做什么用途,体现什么作用,我还真不知道 判定数字可以使用:
IDcode = IDcode.rstrip('X')
if not(IDcode.isdigit()):
print("Error!")
return 0 身份证号的第18位校验码;加权求和 不建议使用a, b, c, d, e, f这种无实际意义的变量名
例如b是一个list,目的应该是一个检测的set
可以修改b为
CheckListSet = ["1","2","3","4","5","6","7","8","9","0","X"]
Or
check_list_set = ["1","2","3","4","5","6","7","8","9","0","X"]
在代码中适当的添加注释
例如多个loop使用i
# 在开始进行简要的说明,可以帮助别人理解和自己的后期代码复查。
CheckListSet = ["1","2","3","4","5","6","7","8","9","0","X"]
# 遍历Input ID,检测合规性
for i in IDcode:
if not(i in CheckListSet):
print("Error!")
return 0
避免一些直译的词语例如sum,有些函数中sum可能拥有实际功能,可以修改成 Id_sum 这样的 灿烂的小居 发表于 2021-7-5 15:28
不建议使用a, b, c, d, e, f这种无实际意义的变量名
例如b是一个list,目的应该是一个检测的set
可以修改 ...
谢谢~好的.我知道了{:1_921:}{:1_921:}{:1_921:} anandyuan 发表于 2021-7-5 15:20
身份证号的第18位校验码;加权求和
YES~果然是大佬;www 本帖最后由 涛之雨 于 2021-7-5 15:51 编辑
循环检测的话可以用正则表达式去验证可以更简单点;
此外,外面单独的循环检测字符有效性可以放到求和的部分,先判断是不是在0-9中,然后再求和。
然后最后一位可以不判断是否在范围内,直接比对是不是计算出来的结果就行了。
此外,数字0-9好像有个参数可以直接获取,不需要列举出来,还可以用range生成列表,也可以精简代码量 也可以通过列表推导式来减少代码量 not(a==b) 为啥不写成 a!=b
not(a in b) 可以写成 a not in b
页:
[1]
2