首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用户输入列表,然后将数字相加计算ISBN校验位

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

Stack Overflow用户
提问于 2018-10-15 01:28:42
回答 2查看 41关注 0票数 1
代码语言:javascript
复制
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“,但我发现这有点单调乏味。我试着把它放在开头的主括号之前,但它不起作用。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-15 01:37:41

您可以使用列表理解将字符串num1的所有元素转换为整数,然后使用列表切片来计算这两个和:

代码语言:javascript
复制
num1 = input("Enter a 12 digit ISBN number and I will output your check digit:  ")
nums = [int(num) for num in num1]
oddTotal = sum(nums[::2])
evenTotal= sum(nums[1::2])
票数 0
EN

Stack Overflow用户

发布于 2018-10-15 01:37:04

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

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52805242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档