【发布时间】:2016-03-14 19:52:41
【问题描述】:
我的代码应该要求输入一个 7 位数字 (GTIN 8) 并告诉您第 8 位数字和/或要求您输入一个 8 位数字 (GTIN 8) 号码并判断它是否是有效的 GTIN 8 号码。我没有得到这些输出。
当我输入非 7 位数字时出现错误消息
c = int(GTIN[2])*3
IndexError: 字符串索引超出范围
当我输入一个 8 位数字时出现错误消息
如果 len(str(GTIN))==8 和 sum(total)%10==0:
TypeError: 'int' 对象不可迭代 我需要对我的代码执行什么操作才能修复此错误?
谢谢。这是我的代码(我可以澄清你不确定的任何事情):
while 2>1:
GTIN = input("Enter 7 digit number for check-digit. Enter 8 digit number for validity.")
if GTIN.isdigit()==False:
continue
a = int(GTIN[0])*3
b = int(GTIN[1])*1
c = int(GTIN[2])*3
d = int(GTIN[3])*1
e = int(GTIN[4])*3
f = int(GTIN[5])*1
g = int(GTIN[6])*3
total = (a+b+c+d+e+f+g)
checkdigit = (total + 9) // 10 * 10 - total
if len(GTIN) == 7:
print("Your check digit is",checkdigit)
if len(str(GTIN))==8 and sum(total)%10==0:
print("Valid GTIN-8 number")
else: print("Invalid GTIN number")
【问题讨论】:
-
不应该检查
GTIN的长度在开始尝试访问其中的单个字符吗? -
我不确定这对于您如何编写代码是否有必要。不过可能,谢谢
标签: python validation debugging check-digit