我已經編寫了一個算法,可以掃描「ID's」文件並將該值與整數i的值進行比較(我已將整數轉換爲字符串爲了比較,我已經修剪了行中的「\ n」前綴)。該算法會比較文件中每行的這些值(每個ID)。如果它們相等,算法會將i增加1,並使用i的新值進行reccurtion。如果該值不相等,則將其與文件中的下一行進行比較。它會這樣做,直到它具有不在文件中的i值,然後返回該值以用作下一條記錄的ID。嘗試查找下一個最大值時發現Python算法錯誤
我的問題是我有一個ID的文件列表1,3,2,因爲我刪除了一個ID 2的記錄,然後創建一個新的記錄。這顯示算法正常工作,因爲它給以前刪除的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
是否有你需要使用遞歸函數或者你可以使用一個列表(或清單)或字典理由嗎? – JGreenwell