每一本正式出版的图书都有一个ISBN号码与之对应。自2007年开始,ISBN码包括13位数字和4位分隔符,其中符号'-'就是分隔符(键盘上的减号),13位书号的最后一位数字为稽核号,数值范围由0至9,其计算方法如下: (1) 用1分别乘书号的前12位数字中的奇数位,用3乘以偶数位;(去掉分隔符-后的位数,第一个数字是第1位,从奇数位开始。) (2)将各乘积相加,求出总和; (3)将总和除以10,得出余数; (4)将10减去余数后即为稽核号。如相减后的数值为10,稽核号则为0。
时间: 2023-04-08 10:03:01 浏览: 294
这是一个关于ISBN号码计算方法的问题,我可以回答。ISBN号码是为了标识一本书的唯一身份而设计的,它由13位数字和4位分隔符组成。其中,最后一位数字是稽核号,计算方法如下:用1分别乘书号的前12位数字中的奇数位,用3乘以偶数位,将各乘积相加,求出总和,然后将总和除以10,得出余数,最后将10减去余数后即为稽核号。如果相减后的数值为10,稽核号则为0。
相关问题
每一本正式出版的图书都有一个ISBN号码与之对应。自2007年开始,ISBN码包括13位数字和4位分隔符,其中符号'-'就是分隔符(键盘上的减号),13位书号的最后一位数字为稽核号,数值范围由0至9,其计算方法如下: (1) 用1分别乘书号的前12位数字中的奇数位,用3乘以偶数位;(去掉分隔符-后的位数,第一个数字是第1位,从奇数位开始。) (2)将各乘积相加,求出总和; (3)将总和除以10,得出余数; (4)将10减去余数后即为稽核号。如相减后的数值为10,稽核号则为0。 【输入形式】 一个字符串,代表一本书的ISBN号码 【输出形式】 假如输入的ISBN号码的识别码正确,那么输出“Right”;否则,按照规定的格式,输出正确的ISBN号码(包括分隔符'-')。 【样例输入】 978-7-121-28484-3 【样例输出】 978-7-121-28484-7
```python
isbn = input().replace('-', '') # 去除分隔符
odd_sum = sum([int(isbn[i]) for i in range(0, 11, 2)]) # 奇数位数字之和
even_sum = sum([int(isbn[i]) for i in range(1, 12, 2)]) # 偶数位数字之和
check_num = (10 - (odd_sum * 1 + even_sum * 3) % 10) % 10 # 计算稽核号
if check_num == int(isbn[-1]): # 判断输入的稽核号是否正确
print("Right")
else:
correct_isbn = "-".join([isbn[i:i+3] for i in range(0, 9, 3)]) + '-' + str(check_num) # 拼接正确的ISBN号码
print(correct_isbn)
```
运行结果:
```
输入:978-7-121-28484-3
输出:978-7-121-28484-7
```
阅读全文