вот для примера две работы. сделай похожую работу,...
Created on: November 11, 2026
Created on: November 11, 2026
вот для примера две работы. сделай похожую работу, только с другими подобными упражнениями с похожей расписанной техникой выполнения упражнения, как на первом файле. оформи как в первом файле. фио поменяй на Скоробогатова В.А. из группы ЭДл-225.
pythonfrom docx import Document from docx.shared import Cm, Pt from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT from docx.oxml import OxmlElement from docx.oxml.ns import qn from PIL import Image, ImageDraw import math, os src='/mnt/data/разминка 1.docx' out='/mnt/data/Комплекс_разминки_Скоробогатова_ВА.docx' imgdir='/mnt/data/exercise_imgs' os.makedirs(imgdir,exist_ok=True) # Simple monochrome exercise-sequence sketches (two schematic poses per exercise). def person(draw, x, y, pose='stand', scale=1.0): # head, torso, limbs; coordinates centered at (x,y), y is head top r=int(7*scale); lw=max(2,int(3*scale)) draw.ellipse((x-r,y,x+r,y+2*r),outline='black',width=lw) neck=y+2*r hip=neck+int(30*scale) draw.line((x,neck,x,hip),fill='black',width=lw) if pose=='arms_up': arms=[((x,neck+5),(x-15*scale,neck-18*scale)),((x,neck+5),(x+15*scale,neck-18*scale))] legs=[((x,hip),(x-10*scale,hip+28*scale)),((x,hip),(x+10*scale,hip+28*scale))] elif pose=='arms_side': arms=[((x,neck+5),(x-24*scale,neck+5)),((x,neck+5),(x+24*scale,neck+5))] legs=[((x,hip),(x-10*scale,hip+28*scale)),((x,hip),(x+10*scale,hip+28*scale))] elif pose=='twist': arms=[((x,neck+5),(x-23*scale,neck-2*scale)),((x,neck+5),(x+20*scale,neck+12*scale))] legs=[((x,hip),(x-10*scale,hip+28*scale)),((x,hip),(x+10*scale,hip+28*scale))] elif pose=='sidebend': draw.line((x,neck,x+10*scale,hip),fill='black',width=lw) arms=[((x+3*scale,neck+5),(x-18*scale,neck-12*scale)),((x+3*scale,neck+5),(x+30*scale,neck+5))] legs=[((x+10*scale,hip),(x,hip+28*scale)),((x+10*scale,hip),(x+20*scale,hip+28*scale))] elif pose=='squat': hip2=neck+int(23*scale) draw.line((x,neck,x,hip2),fill='black',width=lw) arms=[((x,neck+5),(x-24*scale,neck+5)),((x,neck+5),(x+24*scale,neck+5))] legs=[((x,hip2),(x-22*scale,hip2+17*scale)),((x,hip2),(x+22*scale,hip2+17*scale))] elif pose=='lunge': arms=[((x,neck+5),(x-18*scale,neck+12*scale)),((x,neck+5),(x+18*scale,neck+12*scale))] legs=[((x,hip),(x-24*scale,hip+22*scale)),((x,hip),(x+24*scale,hip+25*scale))] elif pose=='knee': arms=[((x,neck+5),(x-16*scale,neck+5)),((x,neck+5),(x+16*scale,neck+5))] legs=[((x,hip),(x-8*scale,hip+28*scale)),((x,hip),(x+12*scale,hip+12*scale))] else: arms=[((x,neck+5),(x-18*scale,neck+5)),((x,neck+5),(x+18*scale,neck+5))] legs=[((x,hip),(x-10*scale,hip+28*scale)),((x,hip),(x+10*scale,hip+28*scale))] for a,b in arms+legs: draw.line((int(a[0]),int(a[1]),int(b[0]),int(b[1])),fill='black',width=lw) poses=[('stand','arms_up'),('arms_side','twist'),('stand','knee'),('stand','sidebend'), ('stand','squat'),('stand','lunge'),('stand','twist'),('stand','knee'), ('stand','arms_side'),('sidebend','stand')] for i,(p1,p2) in enumerate(poses,1): im=Image.new('RGB',(300,150),'white'); d=ImageDraw.Draw(im) person(d,85,18,p1,1.0); person(d,215,18,p2,1.0) d.line((145,75,155,75),fill='black',width=2) d.polygon([(155,75),(149,71),(149,79)],fill='black') im.save(f'{imgdir}/{i}.png') exercises=[ ("И.п. – о.с., руки на поясе. Ходьба на месте с поочерёдным захлёстыванием голени назад.", "30–40 шагов","Сохранять ровный темп. Корпус держать прямо, колени направлять вниз, пятками мягко приближаться к ягодицам. Дышать свободно."), ("И.п. – стойка ноги врозь, руки вдоль туловища. 1 – поднять руки через стороны вверх, потянуться (вдох). 2 – опустить руки через стороны (выдох).", "8–10 раз","Поднимать руки плавно, не прогибаться в пояснице. В верхнем положении вытянуться макушкой вверх, плечи не поднимать к ушам."), ("И.п. – стойка ноги врозь, руки в стороны. 1–2 – согнуть руки к плечам, свести лопатки. 3–4 – разогнуть руки в стороны. Повторять.", "8–10 раз","Локти держать на уровне плеч. При сведении лопаток не прогибать поясницу. Движения выполнять ритмично, без рывков."), ("И.п. – стойка ноги врозь, руки на поясе. 1 – наклон туловища вправо, левая рука скользит вверх вдоль туловища. 2 – и.п. 3–4 – то же влево.", "6–8 раз в каждую сторону","Наклон выполнять строго в сторону, не поворачивая плечи. Таз сохранять неподвижным, тянуться рукой вверх. Не делать резких движений."), ("И.п. – широкая стойка ноги врозь, руки на поясе. 1–2 – неглубокое приседание. 3–4 – вернуться в и.п.", "10–12 раз","Стопы полностью прижаты к полу, колени направлены в сторону носков. Спину держать прямой, приседать без резкого опускания."), ("И.п. – стойка ноги врозь, руки на поясе. 1 – шаг правой ногой назад на носок, руки поднять вперёд. 2 – и.п. 3–4 – то же левой ногой.", "8 раз каждой ногой","Шаг делать достаточно широким, корпус не наклонять. Опорную ногу слегка согнуть. Сохранять равновесие и равномерное дыхание."), ("И.п. – стойка ноги врозь, руки согнуты перед грудью. 1–2 – поворот туловища вправо, руки развести в стороны. 3–4 – и.п. 5–8 – то же влево.", "6–8 раз в каждую сторону","Таз и ноги остаются неподвижными. Поворот выполнять в комфортной амплитуде, не пружинить. Взгляд направлять по ходу поворота."), ("И.п. – о.с., руки на поясе. 1 – поднять правое колено до уровня таза. 2 – опустить ногу. 3–4 – то же левой ногой.", "8–10 раз каждой ногой","Стоять прямо, не отклонять корпус назад. Поднимать бедро без рывка, стопу держать расслабленной. При необходимости выполнять медленнее."), ("И.п. – стойка ноги врозь, руки вдоль туловища. 1–2 – подняться на носки, руки развести в стороны. 3–4 – опуститься на всю стопу, руки вниз.", "10 раз","Подниматься вертикально, не заваливать голеностопы наружу или внутрь. В верхнем положении удержать равновесие, опускаться плавно."), ("И.п. – стойка ноги врозь, руки на поясе. 1 – плавный наклон головы вперёд. 2 – и.п. 3 – поворот головы вправо. 4 – и.п. 5–6 – то же влево.", "4–6 раз","Двигать только головой, плечи опущены и неподвижны. Не запрокидывать голову назад и не выполнять круговые вращения. Амплитуда небольшая.") ] doc=Document(src) # Clear original paragraphs, keep first title style as a base. for p in list(doc.paragraphs): p._element.getparent().remove(p._element) p=doc.add_paragraph("Комплекс упражнений без предмета для разминки") p.alignment=WD_ALIGN_PARAGRAPH.CENTER p.runs[0].bold=True; p.runs[0].font.size=Pt(14) for txt in ["студента(ки) группы ЭДл-225","Скоробогатовой В.А.","Место проведения: Гимнастический зал","Контингент учащихся: Студенты 2 курса","Основное или оздоровительное отделение (нужное подчеркнуть)"]: pp=doc.add_paragraph(txt); pp.alignment=WD_ALIGN_PARAGRAPH.CENTER for r in pp.runs: r.font.size=Pt(11) table=doc.tables[0] # preserve first file's table formatting, replace rows to header + 10 while len(table.rows)>1: table._tbl.remove(table.rows[-1]._tr) for _ in range(10): table.add_row() headers=["№ п/п","Содержание упражнения","Дозировка","Методические указания","Рисунок"] for j,h in enumerate(headers): table.cell(0,j).text=h for i,(content,dose,method) in enumerate(exercises,1): row=table.rows[i] vals=[str(i),content,dose,method,""] for j,v in enumerate(vals): cell=row.cells[j]; cell.text=v; cell.vertical_alignment=WD_CELL_VERTICAL_ALIGNMENT.CENTER for para in cell.paragraphs: para.paragraph_format.space_after=Pt(0) para.paragraph_format.space_before=Pt(0) for run in para.runs: run.font.name='Times New Roman'; run.font.size=Pt(9) cell=row.cells[4] para=cell.paragraphs[0]; para.alignment=WD_ALIGN_PARAGRAPH.CENTER para.add_run().add_picture(f'{imgdir}/{i}.png',width=Cm(4.0)) # style header for cell in table.rows[0].cells: cell.vertical_alignment=WD_CELL_VERTICAL_ALIGNMENT.CENTER for para in cell.paragraphs: para.alignment=WD_ALIGN_PARAGRAPH.CENTER for run in para.runs: run.bold=True; run.font.name='Times New Roman'; run.font.size=Pt(9) # Set margins and default font for section in doc.sections: section.top_margin=Cm(1.5); section.bottom_margin=Cm(1.5) section.left_margin=Cm(1.3); section.right_margin=Cm(1.3) section.page_width=Cm(21); section.page_height=Cm(29.7) doc.styles['Normal'].font.name='Times New Roman' doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'),'Times New Roman') doc.styles['Normal'].font.size=Pt(10) doc.save(out) print(out, os.path.getsize(out))
Готово! Подготовил новую работу на основе двух примеров:
(Готовый документ)