print("""Hi, and welcome to \"GENERATE A CHECK DIGIT \" """)
num1 =input("Enter a 12 digit ISBN number and I will output your check digit: ")
oddTotal=int(num1[0])+int(num1[2])+int(num1[4])+int(num1[6])+int(num1[8])+int(num1[10])
evenTotal=int(num1[1])+int(num1[3])+int(num1[5])+int(num1[7])+int(num1[9])+int(num1[11])
Total=oddTotal+(evenTotal*3)
checkDigit=10-(Total%10)
print("For the given ISBN: " + str(num1)+ " The Check digit should be: " + str(checkDigit))
print("Complete ISBN 13 CODE = " +str(num1)+str(checkDigit))
我的问题:我在每个列表项之前添加了“int”,但发现这有点乏味。我尝试将它放在主括号之前的开头,但它不起作用。
有没有办法改进这段代码。
最佳答案
您可以将 sum
与 map
和字符串切片一起使用:
num1 = input("Enter a 12 digit ISBN number and I will output your check digit: ")
oddTotal = sum(map(int, num1[::2]))
evenTotal = sum(map(int, num1[1::2]))
字符串切片的语法与列表切片类似,即格式为start:end:step
。
关于python - 用户输入列表,然后将数字相加计算ISBN校验位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52805242/