pythonisbn校验
时间: 2023-10-12 22:12:56 浏览: 32
可以使用以下代码来验证一个ISBN是否合法:
```python
def is_valid_isbn(isbn):
"""
Check if ISBN is valid
"""
if len(isbn) != 10:
return False
# Calculate check digit
check_digit = sum((i + 1) * int(x) for i, x in enumerate(isbn[:-1])) % 11
if check_digit == 10:
check_digit = 'X'
else:
check_digit = str(check_digit)
return check_digit == isbn[-1]
```
这个函数接受一个ISBN作为参数,并返回一个布尔值,表示该ISBN是否合法。
相关问题
educoder中 国际标准书号校验答案 python
以下是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
```
洛谷p1055python3
根据提供的引用内容,我们可以看出这是一段C++代码,而洛谷p1055是一道题目,要求我们使用Python3来实现这个功能。因此,我们需要将C++代码转换为Python3代码。
根据题目描述,这个程序的功能是检查一个ISBN号码是否正确。ISBN号码是一个13位的数字,其中前12位是标识号码,最后一位是校验码。校验码的计算方法是将前12位的数字分别乘以1或3,然后将这些结果相加,最后用11取模得到一个数字,如果这个数字等于校验码,则说明这个ISBN号码是正确的。
下面是Python3代码实现:
```python
isbn = input() # 输入ISBN号码
a, b = 1, 0
for i in range(12):
if isbn[i] != '-':
b += int(isbn[i]) * a
a += 1
b %= 11
if b == int(isbn[12]) or (b == 10 and isbn[12] == 'X'):
print("Right")
else:
if b == 10:
print(isbn[:12] + 'X')
else:
print(isbn[:12] + str(b))
```