first commit

This commit is contained in:
2024-03-12 00:26:54 -04:00
commit 3d476f095c
222 changed files with 26485 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
import argparse
import json
import random
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
# Define command-line arguments
parser = argparse.ArgumentParser(description='Generate test papers, answer sheets, and marking scheme.')
parser.add_argument('-q', '--question-bank', type=str, required=True, help='Path to JSON file containing question bank.')
parser.add_argument('-n', '--number-question', type=int, required=True, help='Number of questions to include in the test paper.')
args = parser.parse_args()
# Open JSON file and load data
with open(args.question_bank, 'r') as f:
data = json.load(f)
# Select random questions
selected_questions = random.sample(data, args.number_question)
# Create Test Paper, Answer Sheet, and Marking Scheme
test_paper_doc = Document()
answer_sheet_doc = Document()
marking_scheme_doc = Document()
# Set font
font = test_paper_doc.styles['Normal'].font
font.name = 'Arial'
font.size = Pt(12)
# Add test paper title
test_paper_title = test_paper_doc.add_paragraph('Test Paper', style='Title')
test_paper_title.alignment = WD_ALIGN_PARAGRAPH.CENTER
test_paper_doc.add_paragraph()
# Add answer sheet title
answer_sheet_title = answer_sheet_doc.add_paragraph('Answer Sheet', style='Title')
answer_sheet_title.alignment = WD_ALIGN_PARAGRAPH.CENTER
answer_sheet_doc.add_paragraph()
# Add marking scheme title
marking_scheme_title = marking_scheme_doc.add_paragraph('Marking Scheme', style='Title')
marking_scheme_title.alignment = WD_ALIGN_PARAGRAPH.CENTER
marking_scheme_doc.add_paragraph()
# Loop through selected questions and add to documents
for i, question in enumerate(selected_questions):
# Test Paper
test_paper_doc.add_paragraph(f'{i+1}. {question["question"]}')
test_paper_doc.add_paragraph(f' A. {question["option_a"]}')
test_paper_doc.add_paragraph(f' B. {question["option_b"]}')
test_paper_doc.add_paragraph(f' C. {question["option_c"]}')
test_paper_doc.add_paragraph(f' D. {question["option_d"]}')
test_paper_doc.add_paragraph()
# Answer Sheet
answer_sheet_doc.add_paragraph(f'{i+1}. {question["question"]}')
answer_sheet_doc.add_paragraph(f' A. {question["option_a"]}')
answer_sheet_doc.add_paragraph(f' B. {question["option_b"]}')
answer_sheet_doc.add_paragraph(f' C. {question["option_c"]}')
answer_sheet_doc.add_paragraph(f' D. {question["option_d"]}')
answer_sheet_doc.add_paragraph(f'Answer: {question["answer"]}')
answer_sheet_doc.add_paragraph(f'Explanation: {question["explanation"]}')
answer_sheet_doc.add_paragraph()
# Marking Scheme
marking_scheme_doc.add_paragraph(f'{i+1}. {question["question"]}')
marking_scheme_doc.add_paragraph(f'Answer: {question["answer"]}')
marking_scheme_doc.add_paragraph()
# Save documents
test_paper_doc.save('test_paper.docx')
answer_sheet_doc.save('answer_sheet.docx')
marking_scheme_doc.save('marking_scheme.docx')