Служебный скрипт проверки данных вопросов
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# Служебная проверка данных викторины: у каждого вопроса 4 варианта,
|
||||
# номер правильного ответа существует, тексты не пустые.
|
||||
# Запуск: python check_questions.py
|
||||
import re
|
||||
import sys
|
||||
|
||||
with open("questions.js", encoding="utf-8") as f:
|
||||
src = f.read()
|
||||
|
||||
texts = re.findall(r'text:\s*"([^"]*)"', src)
|
||||
options_blocks = re.findall(r'options:\s*\[([^\]]*)\]', src)
|
||||
corrects = [int(m) for m in re.findall(r'correct:\s*(\d+)', src)]
|
||||
|
||||
errors = []
|
||||
|
||||
if not (len(texts) == len(options_blocks) == len(corrects)):
|
||||
errors.append("У какого-то вопроса не хватает поля (text/options/correct).")
|
||||
|
||||
for n, (text, block, correct) in enumerate(zip(texts, options_blocks, corrects), 1):
|
||||
opts = re.findall(r'"([^"]*)"', block)
|
||||
if not text.strip():
|
||||
errors.append(f"Вопрос {n}: пустой текст.")
|
||||
if len(opts) != 4:
|
||||
errors.append(f"Вопрос {n}: вариантов {len(opts)}, а нужно 4.")
|
||||
if not (0 <= correct < len(opts)):
|
||||
errors.append(f"Вопрос {n}: correct={correct} указывает мимо вариантов.")
|
||||
|
||||
if errors:
|
||||
print("ПРОБЛЕМЫ:")
|
||||
for e in errors:
|
||||
print(" -", e)
|
||||
sys.exit(1)
|
||||
|
||||
print(f"OK: {len(texts)} вопросов, у всех 4 варианта и правильный ответ на месте.")
|
||||
Reference in New Issue
Block a user