w = (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) #权重元组
identityID = list(map(int, list(input()))) #输入身份证号码
lst = [w[i] * identityID[i] for i in range(17)]
num = (12 - sum(lst) % 11) % 11 #计算验证码
if num == identityID[17] : #在此处填空,根据验证码判断身份证号码是否正确
print("这是一个正确的身份证号码。")
else:
print("这是一个错误的身份证号码。")
Exited with error status 1
Traceback (most recent call last):
File "1e9a62e8526272f05df621e0939e3e5c", line 3, in <module>
lst = [w[i] * identityID[i] for i in range(17)]
File "1e9a62e8526272f05df621e0939e3e5c", line 3, in <listcomp>
lst = [w[i] * identityID[i] for i in range(17)]
IndexError: list index out of range
这错在哪儿,怎么改
代码没错
只是你输入的必须18位数字,输入的少于18位就出错,你要加个判断
w = (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) #权重元组
s=input()
if s.isdigit() and len(s)==18:
identityID = list(map(int, list(s))) #输入身份证号码
lst = [w[i] * identityID[i] for i in range(17)]
num = (12 - sum(lst) % 11) % 11 #计算验证码
if num == identityID[17] : #在此处填空,根据验证码判断身份证号码是否正确
print("这是一个正确的身份证号码。")
else:
print("这是一个错误的身份证号码。")
else:
print("输入错误。身份证号码应该是18位数字。")
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632