python - 用户输入列表,然后将数字相加计算ISBN校验位

标签 python string input

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”,但发现这有点乏味。我尝试将它放在主括号之前的开头,但它不起作用。

有没有办法改进这段代码。

最佳答案

您可以将 summap 和字符串切片一起使用:

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/

相关文章:

java - 在 Java 中使用 indexOf() 方法解析文件

python - 如何使用用户输入附加列表

python - Assets 损坏问题 flutter、fastapi、Lambda、ApiGateway、S3

python - 绘制一个螺旋,其中 r=theta^2 for 0<= theta <= 10*pi ...in python

java - 将字符串拆分为几个两个字符串

c - C 程序中 STDIN 输入大小限制为 1k

javascript - 奇怪的 addEventListener 行为

python - 如何自动构建多个列表

Python - 用零扩展和填充列表以匹配另一个列表

c - 当用户输入 "quit"时使 while 循环不打印(在用户说退出但程序结束后仍打印 STR)