educoder中 国际标准书号校验答案 python
时间: 2023-10-29 14:07:17 浏览: 143
以下是Python代码实现ISBN校验:
```python
def check_isbn(isbn):
# 去除横杠和空格
isbn = isbn.replace('-', '').replace(' ', '')
# ISBN必须为10位或13位
if len(isbn) != 10 and len(isbn) != 13:
return False
# 10位ISBN校验
if len(isbn) == 10:
if not isbn[:-1].isdigit() or not (isbn[-1] == 'X' or isbn[-1].isdigit()):
return False
s = sum(int(isbn[i]) * (10 - i) for i in range(9))
s += 10 if isbn[-1] == 'X' else int(isbn[-1])
if s % 11 != 0:
return False
# 13位ISBN校验
if len(isbn) == 13:
if not isbn.isdigit():
return False
s = sum(int(isbn[i]) * (1 if i % 2 == 0 else 3) for i in range(12))
if (10 - s % 10) != int(isbn[-1]):
return False
return True
```
函数接受一个字符串类型的ISBN号码作为参数,返回bool类型的结果。如果ISBN号码校验通过,返回True,否则返回False。
例如:
```python
print(check_isbn('978-7-111-40736-3')) # True
print(check_isbn('9787111407363')) # True
print(check_isbn('978-7-111-40736-4')) # False
print(check_isbn('978-7-111-40736')) # False
```
阅读全文