解题思路:
(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分
2 人评分
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:495 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:683 |
哥德巴赫曾猜测 (C语言代码)浏览:778 |
小九九 (C++代码)简单粗暴,直接输出浏览:684 |
C二级辅导-阶乘数列 (C语言代码)浏览:1831 |
发工资咯 (C语言代码)浏览:815 |
Manchester-汽水瓶问题浏览:4240 |
蛇行矩阵 (C语言代码)浏览:561 |
永远的丰碑 (C++代码)浏览:816 |
WU-C语言程序设计教程(第三版)课后习题6.6 (C语言代码)(水仙花数)浏览:967 |