【发布时间】:2019-04-27 09:36:57
【问题描述】:
所以开始时,我一般是编程新手(3 个月左右),虽然通过书本学习很好,但我确实喜欢尝试应用我的知识并通过经验学习。
在我的工作中,我们的仓库工作人员经常选择错误的订单,因此我正在尝试开发一些东西,可以从 .txt 文件中提取订单列表,并根据所选择的商品进行检查。我觉得这是一项可以用来巩固我现有知识的任务,同时也可以学习新事物。
from tkinter.filedialog import askopenfilename
#This splits the order .txt file into a list
def picklist(ordernum):
with open(ordernum, "r") as f:
mylist = [line.strip() for line in f]
return mylist
def test(list):
pickeditem = input("Please scan the first item")
for i in range(len(list)):
if list[i] == pickeditem:
print("Correct item.")
else:
while list[i] != pickeditem:
input("Wrong item! Please scan again:")
if list[i] == pickeditem:
print("Correct item.")
def order():
print("Please pick the order you want to complete")
order = askopenfilename() #gets order .txt from user
pcklist = picklist(order)
print("You pick list is: ",pcklist)
test(pcklist)
order()
所以一般的想法是创建一个 .txt 文件,其中包含需要提取的项目序列代码列表,然后在我创建的 order 函数中的 python 中获取它。然后我使用 picklist 函数将存储在 .txt 文件中的项目拆分为一个列表,这样我就可以让用户一次扫描一个项目以验证它是正确的。
这是我试图调用当前所谓的测试函数的地方。我希望此函数获取列表中的每个项目,如果它等于扫描要打印的项目,那就是正确的项目。这很好用,对于第一项来说非常好。
问题是让它迭代到列表中的下一项。因此,如果项目一是 2155 并且项目 2155 被扫描,它将显示正确的项目。问题是它会说“错误的项目!请再次扫描:”因为我假设 pythong 现在已经移动到列表中的第 2 项。但是,如果我然后输入 2 的代码,它会说错误的项目!请重新扫描。
我尝试过使用列表索引而不是 avial - 也许我应该在单个函数中执行此操作,而不是像我一样拆分它。
我当然不是在寻找任何人来为我完成代码,而是真正为我指明了我需要学习的正确方向。该项目的最终目标是它还保存有关每个项目的仓库位置、每个项目所需的数量以及从我们的内部订单系统中提取选择列表的能力的信息。但是,它们是我想在学习的过程中一点一点整合的东西。
我知道这可能不是有史以来最流畅、最 Python 的代码,但我确实在追求一些易于阅读、理解和编辑的未来。
现在我只需要了解我需要学习什么/我需要如何思考这个问题,以便我可以检查 .txt 文件中提供的每个项目是否与用户扫描的每个项目匹配。
提前致谢。
【问题讨论】: