Вы можете сделать следующее. Каждый раз, когда пользователь правильно переводит, добавляйте это слово в отдельный список. В следующий раз, когда слово будет выбрано случайным образом и оно окажется в новом списке, разрешите использовать его с определенной вероятностью, например, 50%; в противном случае выберите другое слово. Вам нужно будет поместить эту логику в собственный цикл на случай, если другое «правильное» слово будет выбрано случайным образом.
import random
vokabeln = {
"Haus": "house",
"Garten": "garden",
"Freund": "friend",
"Freundin": "friend"
}
korrekt = []
versuche = int(input("Anzahl der Versuche: "))
i=0
while i < versuche:
ok = False
while not ok:
x = random.choice(list(vokabeln))
y = vokabeln.get(x)
if x in korrekt:
if random.random() < 0.5:
ok = True
else:
ok = True
i+=1
versuch = input("Übersetze " + x)
if(versuch == y):
korrekt.append(x)
print("Korrekt!")
else:
print("Falsch, richtig war " + y)
Это звучит мне как, Вы оказываетесь перед необходимостью фрагментировать использование модели описания ObjectDataSource и переходить к "олдскульной" установке источника данных и привязке сетки вручную в обратной передаче (или загрузка, в зависимости от обстоятельств), и затем обработка редактирования/обновления вручную также.
Объекты DataSource очень следят, как Вы используете их - и не работаете хорошо, если вообще, при попытке выйти за пределы строк.