From 99e2e923d0c77b02f3fb4ff648ea916954868606 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- works/life/question-pptx/main.py | 122 --------------------------------------- 1 file changed, 122 deletions(-) delete mode 100644 works/life/question-pptx/main.py (limited to 'works/life/question-pptx/main.py') diff --git a/works/life/question-pptx/main.py b/works/life/question-pptx/main.py deleted file mode 100644 index ee278d4..0000000 --- a/works/life/question-pptx/main.py +++ /dev/null @@ -1,122 +0,0 @@ -import random -import pptx -from pptx.util import Pt -import re -from typing import Iterable - -# Chinese colon and English colon is different but both should be supported with love! -choice_question_regex = re.compile( - r'(?P\d+)\s*[\.、.]?\s*(?P.*?)[\((]\s*(?P[a-eA-E])\s*[\))](?P.*?)\s*[aA]\s*[\.、.]?\s*(?P\S+?)\s*[bB]\s*[\.、.]?\s*(?P\S+?)\s*[cC]\s*[\.、.]?\s*(?P\S+?)\s+([dD]\s*[\.、.]?\s*(?P\S+?)\s+)?([eE]\s*[\.、.]?\s*(?P\S+?)\s+)?', re.MULTILINE) - -choice_text = open('./real-choose.txt', 'r', encoding='utf-8').read() - -questions = [] - -for match in choice_question_regex.finditer(choice_text): - q = { - 'id': int(match.group('problem_id')), - 'type': 'c', - 'problem': match.group('problem_1') + "( )" + match.group('problem_2'), - 'answer': match.group('answer').lower(), - 'choices': { - 'a': match.group('choice_a'), - 'b': match.group('choice_b'), - 'c': match.group('choice_c') - } - } - - if match.group('choice_d') != None: - q['choices']['d'] = match.group('choice_d') - - if match.group('choice_e') != None: - q['choices']['e'] = match.group('choice_e') - - questions.append(q) - -print(len(questions)) - -judge_question_regex = re.compile( - r'(?P\d+)\s*[\.、.]?\s*(?P.+)\s*[\((]\s*(?P[✓√×xX])\s*[\))]', re.MULTILINE) - -judge_text = open('./real-judge.txt', 'r', encoding='utf-8').read() - - -for match in judge_question_regex.finditer(judge_text): - questions.append({ - 'id': int(match.group('problem_id')), - 'type': 'j', - 'problem': match.group('problem'), - 'answer': '×' if match.group('answer') in '×xX' else '✓' - }) - -print(len(questions)) - -id_list = [q['id'] for q in questions] -id_list.sort() -for i in range(606): - if not i in id_list: - print(i) - -random.shuffle(questions) - -presentation: pptx.presentation.Presentation = pptx.Presentation() - -buttons: Iterable[pptx.shapes.autoshape.Shape] = [] - -for question in questions: - slide: pptx.slide.Slide = c.add_slide( - presentation.slide_layouts[6]) - - title = slide.shapes.add_textbox(Pt(20), Pt(40), Pt(680), Pt(50)) - problem = slide.shapes.add_textbox(Pt(20), Pt(120), Pt(680), Pt(350)) - answer = slide.shapes.add_textbox(Pt(560), Pt(450), Pt(40), Pt(40)) - id = slide.shapes.add_textbox(Pt(20), Pt(480), Pt(80), Pt(40)) - - if question['type'] == 'c': - title.text = '选择题' - problem.text = question['problem'] + '\n' + '\n'.join( - [choice.upper() + '. ' + question['choices'][choice]for choice in question['choices'].keys()]) - answer.text = question['answer'].upper() - else: - title.text = '判断题' - problem.text = question['problem'] - answer.text = question['answer'] - - id.text = str(question['id']) - - title_text_frame: pptx.text.text.TextFrame = title.text_frame - para: pptx.text.text._Paragraph - for para in title_text_frame.paragraphs: - para.font.size = Pt(42) - para.font.color.theme_color = pptx.enum.dml.MSO_THEME_COLOR.TEXT_2 - - problem_text_frame: pptx.text.text.TextFrame = problem.text_frame - problem_text_frame.margin_top = Pt(10) - para: pptx.text.text._Paragraph - for para in problem_text_frame.paragraphs: - para.space_after = Pt(6) - para.font.size = Pt(30) - problem_text_frame.word_wrap = True - - answer_text_frame: pptx.text.text.TextFrame = answer.text_frame - para: pptx.text.text._Paragraph - for para in answer_text_frame.paragraphs: - para.font.size = Pt(40) - para.font.color.rgb = pptx.dml.color.RGBColor(255, 0, 0) - - id_text_frame: pptx.text.text.TextFrame = id.text_frame - para: pptx.text.text._Paragraph - for para in id_text_frame.paragraphs: - para.font.size = Pt(20) - para.font.color.rgb = pptx.dml.color.RGBColor(128, 128, 128) - - buttons.append(slide.shapes.add_shape(pptx.enum.shapes.MSO_SHAPE.OVAL, Pt( - 660), Pt(460), Pt(40), Pt(40))) - -slide: pptx.slide.Slide = presentation.slides.add_slide( - presentation.slide_layouts[6]) - -for button in buttons: - button.click_action.target_slide = slide - -presentation.save('test.pptx') -- cgit v1.2.3