큰 목록의 데이터베이스에 두 단어를 넣은 다음 두 단어를 모두 제거하여 두 단어가 다시 사용되지 않도록합니다. 목록이 거의 끝나면 관련없는 함수로 전달됩니다.목록 삭제시 충돌이 없어야합니다.
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]
이 어떻게 든 같은 단어가 될 때 이런 일이 벌어지고 있음을 발견했습니다. 그러나 choice가 0이 아니기 때문에, 나는 i
과 words[choice]
이 어떻게 평등 할 수 있는지 보지 못합니다.
나의 유일한 추측은 for 문에서 사용하는 동안 목록을 조작하는 것과 관련이 있거나 실제로 만드는 바보 같은 실수입니다. 그러나 나는 정말로 모른다.
"cursor.execute"인수가''INSERT INTO swaps (word1, word2) VALUES (% s, % s); 여야합니다. % (i, words [choice]'? – martineau