解题思路:
(1)输入ISBN号码字符串string
(2)根据数字Ascll码的范围分批将9位数字和1位识别码按列表和字符串存储
(3)对存储9位数字的列表元素整数化处理,按照规则对元素计算加权和
(4)对加权和结果取余
(5)由于取余结果存在的特殊性故将存储9位数字的列表元素字符化处理
(6)在取余结果=10的情况下:
若识别码=”X”,则说明ISBN正确
若识别码!=”X”,则将”X”赋值给识别码,对列表中插入分隔符,将 识别码加入到列表中,将列表转换为字符串输出正确的ISBN码
(7)在取余结果!=10的情况下:
若识别码=str(取余结果),则说明ISBN正确
若识别码!=str(取余结果),则将str(取余结果)赋值给识别码,对列表 中插入分隔符,将识别码加入到列表中,将列表转换为字符串输出正 确的ISBN码
注意事项:
参考代码:
string = input()
list_string = []
for i in range(0, len(string), 1):
if (ord(string[i]) >= 48 and ord(string[i]) <= 57) and (i != len(string)-1):
list_string.append(string[i])
elif i == len(string)-1:
recognize = string[i]
list_sum = 0
for i in range(0, len(list_string), 1):
list_string[i] = int(list_string[i])
list_sum += list_string[i] * (i+1)
list_mod = list_sum % 11
for i in range(0, len(list_string), 1):
list_string[i] = str(list_string[i])
if list_mod == 10:
pass
if recognize == 'X':
print("Right")
else :
recognize = 'X'
list_string.insert(1, "-")
list_string.insert(5, "-")
list_string.insert(11, "-")
list_string.append(recognize)
new_string = "".join(list_string)
print(new_string)
else :
pass
if recognize == str(list_mod):
print("Right")
else :
recognize = str(list_mod)
list_string.insert(1, "-")
list_string.insert(5, "-")
list_string.insert(11, "-")
list_string.append(recognize)
new_string = "".join(list_string)
print(new_string)
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复