Изменен testem.js с настройками ниже. и его рабочий штраф:)
/* eslint-env node */
module.exports = {
test_page: 'tests/index.html?hidepassed',
disable_watching: true,
launch_in_ci: [
'Chrome'
],
launch_in_dev: [
'Chrome'
],
browser_args: {
Chrome: {
mode: 'ci',
args: [
'--disable-gpu',
'--headless',
'--remote-debugging-port=0',
'--window-size=1440,900'
]
}
}
};
Вы можете использовать random.choices
, что позволяет указать вес выборки. Затем я бы также сохранил словарь в виде списка, чтобы сохранить порядок относительно весов. Как обновлять весовые коэффициенты для правильных или неправильных ответов, зависит от вас, но вы можете использовать обратное масштабирование, например:
vocab = [
("Haus", "house"),
("Garten", "garden"),
("Freund", "friend"),
("Freundin", "friend")
]
weights = [1] * len(vocab)
while ...:
index, (x, y) = random.choices(enumerate(vocab), weights)
attempt = input("Translate " + x)
if(attempt == y):
weights[index] = 1 / (1/weights[index] + 1)
else:
weights[index] = 1 / max(1/weights[index] - 1, 1)
Быстрая идея.
words = {
("Haus", "house", 1),
("Garten", "garden", 0.5),
("Freund", "friend", 1),
("Freundin", "friend", 1)
}
def get_word():
total_probability = sum(map(words, lambda x: x[2]))
selected = random.random() * total_probability
current_probability = 0
for word, translation, probability in words:
current_probability += probability
if select < current_probability:
return word, translation
Вы можете сделать следующее. Каждый раз, когда пользователь правильно переводит, добавляйте это слово в отдельный список. В следующий раз, когда слово будет выбрано случайным образом и оно окажется в новом списке, разрешите использовать его с определенной вероятностью, например, 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)