为响应以下任务,“创建一个算法/程序,该算法/程序将允许用户输入7位数字,然后计算模数11校验数字。然后应向用户显示完整的8位数字”,我的解决方案是:
number7= input("Enter a 7 digit number")
listnum= list(number7)
newnum=list(number7)
listnum[0]=int(listnum[0])*8
listnum[1]=int(listnum[1])*7
listnum[2]=int(listnum[2])*6
listnum[3]=int(listnum[3])*5
listnum[4]=int(listnum[4])*4
listnum[5]=int(listnum[5])*3
listnum[6]=int(listnum[6])*2
addednum= int(listnum[0])+int(listnum[1])+int(listnum[2])+int(listnum[3])+int(listnum[4])+int(listnum[5])+int(listnum[6])
modnum= addednum % 11
if modnum== 10:
checkdigit=X
else:
checkdigit=11-modnum
newnum.append(str(checkdigit))
strnewnum = ''.join(newnum)
print(strnewnum)
(最有可能不是最有效的方式)
基本上是这样的:https://www.loc.gov/issn/check.html 缩短程序的任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
同样值得进行某种用户输入错误检查。
var items = data.employees.map(function (item) {
return item.firstName + ' ' + item.lastName;
});
答案 1 :(得分:0)
您可以在输入之后立即将列表转换为仅包含int元素
number7 = int(input())
然后您可以循环执行这些操作。
for i in range(len(listnum)):
listnum[i] *= (8-i)
sum函数还可以执行对列表中每个元素进行加法的技巧(如果可能的话)
编辑:
addedNum = sum(listNum)
答案 2 :(得分:0)
为您的顶部块使用while循环可能是一个不错的起点。然后,您可以对列表求和并在同一步骤中获取模数。不确定是否可以使其余内容更简洁。
number7= input("Enter a 7 digit number: ")
listnum= list(number7)
newnum=list(number7)
count = 0
while count < 7:
listnum[0+count] = int(listnum[0+count])*(8-count)
count += 1
modnum= sum(listnum) % 11
if modnum== 10:
checkdigit=X
else:
checkdigit=11-modnum
newnum.append(str(checkdigit))
strnewnum = ''.join(newnum)
print('New number:', strnewnum)
编辑:
如果您希望它以ISSN格式打印,请在if-else语句后将代码更改为此:
newnum.append(str(checkdigit))
strnewnum = ''.join(newnum)
strnewnum = '-'.join([strnewnum[:4], strnewnum[4:]])
print('ISSN:', strnewnum)