代码的最后一部分没有按照我的意愿去做。如果checkdigit
与validdigit
相同,则属实,因此应打印“GTIN-8代码有效”。如果没有,它应该说' GTIN-8无效'
gtin = input('Enter a GTIN-8 Code: ')
if len(gtin) == 8 and gtin.isdigit() == True:
print ('Comparing')
else:
print ('Error, 8 digits have not been inputted and/or letters were inputted')
gtinlist = list(gtin)
print (gtinlist) # not needed
checkdigit = gtinlist[7]
print ('This is the check digit given: '+str(checkdigit))
no1 = int(gtinlist[0])*3
no2 = int(gtinlist[1])*1
no3 = int(gtinlist[2])*3
no4 = int(gtinlist[3])*1
no5 = int(gtinlist[4])*3
no6 = int(gtinlist[5])*1
no7 = int(gtinlist[6])*3
print (no1,no2,no3,no4,no5,no6,no7) # not needed
added = (no1+no2+no3+no4+no5+no6+no7)
print (added) #not needed
m = (added + 9) // 10 * 10
validdigit = m - added
print (validdigit)
print (checkdigit)
if (validdigit)==(checkdigit)==True:
print('This GTIN-8 Code is valid')
else:
print('This GTIN-8 Code is not valid')
答案 0 :(得分:1)
验证相等性检查中的数据类型。
如果将末尾附近的打印行更改为:
print validdigit, type(validdigit)
print checkdigit, type(checkdigit)
您将看到一个是字符串,一个是整数。
比较这些数据类型将始终导致False。 int与str没有隐式类型转换。换句话说,Python中的'8' != 8
。将一个转换为int或另一个转换为str,你就没事了。