我正在创建一个代码,用于检查7位GTIN 8号码的第8位数字,然后告诉您它是否是某个GTIN号码。但我得到这个消息,不知道该怎么做才能解决它。
我应该如何更改代码以解决此问题并使代码的功能有效?感谢
CODE:
while 2>1:
GTIN = input("Enter 7 digit number for check-digit. Enter 8 digit number for validity.")
if not GTIN.isdigit() or not len(GTIN) == 7:
print("invalid entry...")
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 sum(total)%10==0:
print("Valid GTIN-8 number")
else:
print("Invalid GTIN number")
错误消息:
如果总和(总)%10 == 0: TypeError:'int'对象不可迭代
答案 0 :(得分:2)
发生异常是因为sum
期望一个序列(例如数字列表)作为其参数,但是您已经传递了一个整数(或int),total
。 int不是由其他对象组成的,因此您不能像使用列表或集合那样迭代它,例如,因此TypeError。
total
已经是a,b,c,d,e,f和g的总和,因此您无需在其上调用sum。
只做
if total % 10 == 0: