任务描述
本关任务: 国际标准书号(ISBN)用10位数字唯一标识的一本书。 最后一位数字为校验位,可以由其他9位数字计算出来,且d1+2d2+3d3+……+10d10必须是11的倍数(di的下标表示从右边起第i个数)。 校验位必须是介于0到10中的一个数字,用字母X表示10. 例如,020131452的校验和是5 10*0+9*2+8*0+7*1+6*3+5*1+4*4+3*5+2*2+1*5
为88,是11的倍数
编写一个python程序,将9位整数作为输入,计算校验和并打印isbn号 例如,输入020131452,输出0201314525
测试说明
平台会对你编写的代码进行测试:
测试输入:711141995; 预期输出: 7111419952
测试输入:730232560; 预期输出: 730232560X
x = input("")
# 代码开始
def calculate_isbn_checksum(isbn):
if len(isbn) != 9:
raise ValueError("输入必须是9位数字")
total = 0
for i in range(9):
total += (10 - i) * int(isbn[i])
checksum = 11 - (total % 11)
if checksum == 10:
return 'X'
elif checksum == 11:
return '0'
else:
return str(checksum)
checksum = calculate_isbn_checksum(x)
isbn = x + checksum
# 代码结束
print(isbn)