gpt4 book ai didi

python - 无法让我的两个值识别出匹配项

转载 作者:行者123 更新时间:2023-11-30 22:40:56 25 4
gpt4 key购买 nike

我正在创建一个程序来验证 Python 中的 GTIN 8 位代码。我已经到了根据以下文本文件中的 GTIN 检查 8 位数字的阶段。

34512340    plain brackets      0.50
98981236 product notfound 0.00
56756777 100mm bolts 0.20
90673412 L-shaped brackets 1.20

但是,我的代码无法识别匹配,它只是直接通过 else 语句。我尝试过尽可能地进行转换,因为我有一种感觉,它们并不都被归类为整数。有什么想法吗?

import sys

digitentry=int(input("Please enter the product number for validation purposes"))

productNo=[int(i) for i in str(digitentry)]

num1=productNo[0]*3
num2=productNo[1]*1
num3=productNo[2]*3
num4=productNo[3]*1
num5=productNo[4]*3
num6=productNo[5]*1
num7=productNo[6]*3

list2 = [num1, num2, num3, num4, num5, num6, num7]
list_sum = sum(list2)

import math


def roundup(x):
return int(math.ceil(x / 10.0)) * 10

ten=(roundup(list_sum))

dig8=ten-list_sum

GTIN = int(str(digitentry)+ str(dig8))
print(GTIN)

if ten%10==0:
print ("Thanks for confirming the product number")
else:
print("This product number is not valid")

with open("stock.txt", "r") as datafile:
for line in datafile:
print (line.split()[0])

if line == GTIN:
print("Yes")
else:
print("No")

最佳答案

首先,您需要存储 str.split 的结果,否则 line 不会改变,它仍然是文件中的整行。其次,您还需要将分割部分转换为 int 进行比较。

with open("test.txt", "r") as datafile:
for line in datafile:
gtin_check = int(line.split()[0])

if gtin_check == GTIN:
print("Yes")
else:
print("No")

最后还有一个问题

GTIN = int(str(digitentry)+ str(dig8))

正如您所见,当您打印 GTIN 时,当提供 34512340 作为输入时,它会输出 345123400。添加了一个额外的数字,但我不确定您实际上想在这里做什么。

<小时/>

此外,您可以将第一部分缩减为仅。

from itertools import cycle

digitentry = input("Please enter the product number for validation purposes ")

c = cycle((3, 1))
list_sum = sum(int(i) * next(c) for i in digitentry)

关于python - 无法让我的两个值识别出匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42736836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com