检查两个Python值是否相等,即使它们相等也不起作用

时间:2016-09-07 17:43:44

标签: python

代码的最后一部分没有按照我的意愿去做。如果checkdigitvaliddigit相同,则属实,因此应打印“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') 

1 个答案:

答案 0 :(得分:1)

验证相等性检查中的数据类型。

如果将末尾附近的打印行更改为:

print validdigit, type(validdigit)
print checkdigit, type(checkdigit)

您将看到一个是字符串,一个是整数。

比较这些数据类型将始终导致False。 int与str没有隐式类型转换。换句话说,Python中的'8' != 8。将一个转换为int或另一个转换为str,你就没事了。