Files
kviz/check_questions.py

35 lines
1.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Служебная проверка данных викторины: у каждого вопроса 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 варианта и правильный ответ на месте.")