LightBeyond @ 2023-03-01 23:32:49
isbn=str(input())
lst=[]
i=1
mode_number=0
for item in isbn:
if item!='-' and i<=9:
lst.append(item)
lst[i-1]=int(lst[i-1])
mode_number+=lst[i-1]*i
i+=1
new_number=mode_number%11
if new_number==10:
new_number='X'
if new_number==isbn[-1]:
print('Right')
else:
new_isbn=isbn[0:-1]+new_number
print(new_isbn)
else:
if new_number==int(isbn[-1]):
print('Right')
else:
new_isbn=isbn[0:-1]+str(new_number)
print(new_isbn)
求助各位,是哪一部分的原因?
by KSS_IS_BIG_SB @ 2023-03-14 09:35:00
倒数第五行的if
判断有问题,如果isbn[-1]
恰好等于'X'
的话,用int()
转换类型是会报错的,可以改成这样,就能过了
if str(new_number)==isbn[-1]:
print('Right')
因为在这里new_number
不会等于10,所以 isbn[-1]
等于'X'
的情况肯定是错误的,就不用再考虑把'X'
转成10比较了
p.s. input()
的默认返回值类型就是string
,可以不用套str()