3.验证书号的合法性 (1) 题目 编程实现,输入一个书号,并输出它的有效性。 国际书号(ISBN)是按照国际标准统一编号的。它由10位或13位数字字符组成,并规定最右边的数字是第1位,最右边的
时间: 2024-12-19 11:20:09 浏览: 31
验证书号的合法性通常涉及检查特定的格式规则,例如ISBN-10,它是通过模11的除法余数规则判断,最后一位是校验码,其余9位用于计算。而ISBN-13则采用EAN-13的标准,包括前两位是出版社识别符,接着是出版年份和月份,然后是顺序号,最后一位是校验码。
以下是简单的基本步骤:
1. **ISBN-10**: 检查是否包含10个数字,最后一个数字不是X(X表示校验码)。计算剩余9位的和,对11取模,如果结果等于校验码,那么有效。
```python
def is_valid_isbn10(isbn):
if len(isbn) != 10 or isbn[-1].isdigit() and isbn[-1] == 'X':
return False
total = sum(int(digit) for digit in isbn[:-1])
return total % 11 == int(isbn[-1])
# 示例:
print(is_valid_isbn10('978045145052X')) # 输出:True 或 False
```
2. **ISBN-13**: 检查是否包含13个数字,最后一两位不是X。同样需要计算校验码并验证。
```python
def is_valid_isbn13(isbn):
if len(isbn) != 13 or isbn[-2:].isdigit() and isbn[-2:] == 'XX':
return False
check_digit = 0
for i in range(12): # 不算最后的校验码
check_digit += (i + 1) * int(isbn[i])
check_digit %= 10
return check_digit == int(isbn[-1])
# 示例:
print(is_valid_isbn13('9780306406158')) # 输出:True 或 False
```
阅读全文