这是题目
我写的程序如下
for i in range(1,17) 这个意思是1-16 少算一位,应该是for i in range(1,18) 1-17,if x[17]判断放在第二个for循环外(向前缩进移位),改的代码如下
n = int(input())
for i in range(n):
x = input()
sum = 0
for j in range(1,18):
sum += (int(x[i-1]))*(2**(18-i))
if x[17] == "X":
sum += 10
else:
sum += int(x[17])
if sum % 11 == 1:
print("YES")
else:
print("NO")
你的问题太多 你参考这个吧
while True:
IDcard = input("请输入一个身份证:")
i = 17
total = 0
for str_num in IDcard:
if str_num == "X":
str_num = '10'
total += int(str_num) * (2**i)
print(f"{str_num}x2**{i}")
i -= 1
if total % 11 == 1:
print("Yes")
else:
print("No")