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

2024-10-01 15:34:21 发布

您现在位置: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') 

Tags: addedisnotcodethisintprintgtin
1条回答
网友
1楼 · 发布于 2024-10-01 15:34:21

验证相等检查中的数据类型。你知道吗

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

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

您将看到一个是字符串,一个是整数。你知道吗

比较这些数据类型将始终导致错误。int与str之间没有隐式类型转换,换句话说,在Python中是'8' != 8。把一个转换成int,或者把另一个转换成str,你就没事了。你知道吗

相关问题 更多 >

    热门问题