所以我有一塊是把兩個詞到數據庫從大名單代碼,然後同時刪除這些詞語從列表中,這樣既不被再次使用。當列表幾乎結束時,它會傳遞給一個不相關的函數。衝突列表中清除的時候,不應該有
def db_add(words):
for i in words:
choice = randint(2, 9)
if len(words) < choice:
finish(words)
else:
cursor.execute(
'INSERT INTO swaps (word1, word2) VALUES (%s, %s);', (i, words[choice])
)
conn.commit()
words.remove(words[choice])
words.remove(i)
現在,由於無法從列表中刪除i
,此操作失敗 - 通常會提前。使用一些打印語句,我發現這種情況發生在i
和words[choice]
最終成爲相同的單詞時發生。但是,因爲選擇從來沒有0,我不明白如何i
和words[choice]
永遠是平等的。
我唯一的猜測是,它有事情做,在使用過程中操縱名單語句,或者這是一個非常愚蠢的錯誤,我做的,但我真的不知道。
可能是問題的一部分,至少是該'cursor.execute'參數應該是' 'INSERT INTO互換(WORD1,單詞2)VALUES(%S,%S);' %(我,單詞[選擇]'? – martineau