解题思路:

(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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论