我编写了一个算法,它扫描一个“ID”文件,并将该值与整数i的值进行比较(我已将整数转换为字符串进行比较,并且已将行中的“\ n”前缀修剪掉)。该算法针对文件中的每行(每个ID)比较这些值。如果它们相等,则算法增加i的值1并使用新值进行递归。如果该值不相等,则将其与文件中的下一行进行比较。它执行此操作直到它有一个在文件中不存在的i的值,然后返回该值以用作下一个记录的ID。
我的问题是,我有一个ID列表文件,其中列出了1、3、2,因为我删除了一个ID为2的记录,然后创建了一个新的记录。这证明了算法的正确性,因为它给出了先前删除的ID为2的新记录的ID。但是,当我创建一个新纪录时,下一个ID是3,导致我的ID列表读取:
我的问题是,我有一个ID列表文件,其中列出了1、3、2,因为我删除了一个ID为2的记录,然后创建了一个新的记录。这证明了算法的正确性,因为它给出了先前删除的ID为2的新记录的ID。但是,当我创建一个新纪录时,下一个ID是3,导致我的ID列表读取:
1,3,2,3
而不是 1,3,2,4
。以下是我的算法及print()
命令的结果。我可以看到它在哪里出错,但无法弄清楚原因。您有什么想法吗?def _getAvailableID(iD):
i = iD
f = open(IDFileName,"r")
lines = f.readlines()
for line in lines:
print("%s,%s,%s"%("i=" + str(i), "ID=" + line[:-1], (str(i) == line[:-1])))
if str(i) == line[:-1]:
i += 1
f.close()
_getAvailableID(i)
return str(i)
输出: (当算法运行以找到应该具有ID 4的记录的适当ID时的输出):
i=1,ID=1,True
i=2,ID=1,False
i=2,ID=3,False
i=2,ID=2,True
i=3,ID=1,False
i=3,ID=3,True
i=4,ID=1,False
i=4,ID=3,False
i=4,ID=2,False
i=4,ID=2,False
i=2,ID=3,False
i=2,ID=2,True
i=3,ID=1,False
i=3,ID=3,True
i=4,ID=1,False
i=4,ID=3,False
i=4,ID=2,False
i=4,ID=2,False