isbn=input()
r_isbn=isbn[0:4]+isbn[5:6]+isbn[7:10]+isbn[11:16]+isbn[-1]
num=0
b=0
n=0
for i in range(12):
s=int(r_isbn[i])
if s%2 == 1:
b += s
else:
n += 3*s
num+=b+n
num%=10
mod =10-num
if mod==10:
if isbn[-1]=='0':
print('Right')
else:
print(isbn[0:-1]+'0')
else:
if isbn[-1]==mod:
print('Right')
else:
print(isbn[0:-1]+mod)
```【问题描述】
每一本正式出版的图书都有一个ISBN号码与之对应。自2007年开始,ISBN码包括13位数字和4位分隔符,其中符号'-'就是分隔符(键盘上的减号),13位书号的最后一位数字为稽核号,数值范围由0至9,其计算方法如下:
(1) 用1分别乘书号的前12位数字中的奇数位,用3乘以偶数位;(去掉分隔符-后的位数)
(2)将各乘积相加,求出总和;
(3)将总和除以10,得出余数;
(4)将10减去余数后即为稽核号。如相减后的数值为10,稽核号则为0。
【输入形式】
一个字符串,代表一本书的ISBN号码
【输出形式】
假如输入的ISBN号码的识别码正确,那么输出“Right”;否则,按照规定的格式,输出正确的ISBN号码(包括分隔符'-')。
【样例输入】
978-7-121-28484-3![图片说明](https://img-ask.csdn.net/upload/201911/04/1572835025_885686.jpg)
【样例输出】
978-7-121-28484-7
求解一道循环与组合数据类型题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 二心TOT 2019-11-04 11:14关注
判断ISBN是否合法就不写了,大概写了功能实现,有问题可私聊
isbn=input('请输入ISBN号码:') def is_right(isbn): isbn_num = isbn.split('-') num = [] for i in range(len(isbn_num)-1): num+= isbn_num[i] for j in range(len(num)): if (j+1)%2 != 0: num[j] = int(num[j]) else: num[j] = int(num[j])*3 sum = 0 for m in num: sum += m if sum%10 == 0 and int(isbn_num[-1]) == 0: print("Right") elif 10 - sum%10 == int(isbn_num[-1]): print("Right") else: print(isbn[:-1]+str(10 - sum%10)) is_right(isbn)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?