如何解决TypeError:'int'对象在我的GTIN代码中不可迭代

时间:2016-03-15 19:58:27

标签: python validation

我正在创建一个代码,用于检查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'对象不可迭代

1 个答案:

答案 0 :(得分:2)

发生异常是因为sum期望一个序列(例如数字列表)作为其参数,但是您已经传递了一个整数(或int),total。 int不是由其他对象组成的,因此您不能像使用列表或集合那样迭代它,例如,因此TypeError。

total已经是a,b,c,d,e,f和g的总和,因此您无需在其上调用sum。

只做

if total % 10 == 0: