编写一个函数tans2ISBN13,对传入的10位ISBN书号(字符串类型)转换为13位ISBN书号(字符串类型)进行返回 【输入形式】 【输出形式】 【样例输入】 7-302-41058-5 【样例输出】 978-7-302-41058-4 【样例说明】 转换方法如下: 在原十位的基础上加上了978。最后一位为检验码,取值范围为0~9,由前12位通过以下计算公式算出: 从左至右12位数字,奇数位数字乘以1,偶数位数字乘以3,再将乘积相加,对10求余,最后求10与余数的差 若差值为0~9,则检验码为对应数字 若差值为10,则检验码为0
时间: 2024-02-05 11:13:14 浏览: 191
印染软件 Tans炼染工艺管理系统 v1.73 网络版
以下是Python的实现代码:
```python
def trans2ISBN13(isbn: str) -> str:
# 去除原字符串中的横杠
isbn = isbn.replace('-', '')
# 在前面添加978
isbn = '978' + isbn[:-1]
# 计算校验码
s = sum(int(isbn[i]) * (1 if i % 2 == 0 else 3) for i in range(12))
check_code = str((10 - s % 10) % 10)
# 拼接成最终结果
return isbn + check_code
```
代码逻辑比较简单,先去除原字符串中的横杠,然后在前面添加978,最后计算出校验码并拼接到字符串末尾即可。其中计算校验码的方法如题目所述,即将前12位按奇偶分别乘以1和3,相加后对10取余,再用10减去余数即为校验码。
阅读全文