Please create a pdf on mixed speaking questions (not funny and not illogical) on present simple and present continuous tense with it's answers for 3rd grade ESL student.Also add formula for sentence construction along with question and answer.Create pdf
mkdir -p /home/daytona/workspace/esl-grammar-pdf && ls /home/daytona/workspace/esl-grammar-pdf/
~/esl-grammar-pdf/create_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.pdfbase import pdfmetrics
OUTPUT = "/home/daytona/workspace/esl-grammar-pdf/Present_Tense_Speaking_Questions_Grade3.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=2*cm,
leftMargin=2*cm,
topMargin=2*cm,
bottomMargin=2*cm
)
# ── Colour palette ──────────────────────────────────────────────────────────
TEAL = colors.HexColor("#1A7A8A")
ORANGE = colors.HexColor("#E07B39")
PURPLE = colors.HexColor("#6A4C93")
LIME = colors.HexColor("#4CAF50")
LIGHT_BG = colors.HexColor("#F0F8FA")
ORANGE_BG = colors.HexColor("#FFF4ED")
PURPLE_BG = colors.HexColor("#F3F0FA")
LIME_BG = colors.HexColor("#F0FAF0")
YELLOW_BG = colors.HexColor("#FFFDE7")
WHITE = colors.white
DARK = colors.HexColor("#2C2C2C")
GREY = colors.HexColor("#555555")
# ── Styles ───────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def style(name, parent="Normal", **kw):
s = ParagraphStyle(name, parent=styles[parent], **kw)
return s
TITLE_STYLE = style("MyTitle", fontSize=22, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=4, leading=28,
fontName="Helvetica-Bold")
SUBTITLE_STYLE = style("MySubtitle", fontSize=13, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=2, leading=18,
fontName="Helvetica")
SECTION_HEAD = style("SecHead", fontSize=14, textColor=WHITE,
alignment=TA_CENTER, spaceAfter=4, leading=20,
fontName="Helvetica-Bold")
FORMULA_TITLE = style("FormulaTitle", fontSize=11, textColor=TEAL,
fontName="Helvetica-Bold", spaceAfter=3)
FORMULA_TEXT = style("FormulaText", fontSize=10.5, textColor=DARK,
fontName="Courier-Bold", spaceAfter=2, leading=16)
FORMULA_EX = style("FormulaEx", fontSize=10, textColor=GREY,
fontName="Helvetica-Oblique", spaceAfter=2, leading=14)
Q_STYLE = style("QStyle", fontSize=11, textColor=DARK,
fontName="Helvetica-Bold", spaceBefore=2, spaceAfter=1, leading=16)
A_STYLE = style("AStyle", fontSize=10.5, textColor=colors.HexColor("#1B5E20"),
fontName="Helvetica", spaceAfter=4, leading=15,
leftIndent=12)
BODY = style("Body", fontSize=10.5, textColor=DARK, leading=16,
fontName="Helvetica", spaceAfter=3)
NOTE = style("Note", fontSize=9.5, textColor=GREY, leading=14,
fontName="Helvetica-Oblique", spaceAfter=2)
# ── Helper: coloured header banner ──────────────────────────────────────────
def banner(text, subtitle=None, bg=TEAL):
rows = [[Paragraph(text, SECTION_HEAD)]]
if subtitle:
rows.append([Paragraph(subtitle, FORMULA_EX)])
t = Table(rows, colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), bg),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", [6]),
]))
return t
# ── Helper: formula box ──────────────────────────────────────────────────────
def formula_box(title, formula, examples, bg=LIGHT_BG, border=TEAL):
content = [
[Paragraph(title, FORMULA_TITLE)],
[Paragraph(formula, FORMULA_TEXT)],
]
for ex in examples:
content.append([Paragraph(f"e.g. {ex}", FORMULA_EX)])
t = Table(content, colWidths=[16.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LINEAFTER", (0,0), (0,-1), 4, border),
("ROUNDEDCORNERS",[6]),
]))
return t
# ── Helper: Q&A row ──────────────────────────────────────────────────────────
def qa_row(number, question, answer, bg=WHITE):
q_cell = [Paragraph(f"Q{number}. {question}", Q_STYLE)]
a_cell = [Paragraph(f"Answer: {answer}", A_STYLE)]
t = Table([[q_cell], [a_cell]], colWidths=[16.5*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("ROUNDEDCORNERS",[5]),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#DDDDDD")),
]))
return t
# ════════════════════════════════════════════════════════════════════════════
# CONTENT
# ════════════════════════════════════════════════════════════════════════════
story = []
# ── Cover banner ─────────────────────────────────────────────────────────────
cover_data = [[Paragraph("Present Simple & Present Continuous", TITLE_STYLE)],
[Paragraph("Speaking Questions with Answers", SUBTITLE_STYLE)],
[Paragraph("Grade 3 | ESL English Practice", SUBTITLE_STYLE)]]
cover = Table(cover_data, colWidths=[17*cm])
cover.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), TEAL),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("TOPPADDING", (0,0), (-1,-1), 14),
("BOTTOMPADDING", (0,0), (-1,-1), 14),
("ROUNDEDCORNERS",[10]),
]))
story.append(cover)
story.append(Spacer(1, 0.4*cm))
# ── Intro note ────────────────────────────────────────────────────────────────
intro = Table([[Paragraph(
"This worksheet has <b>20 mixed speaking questions</b> (10 Present Simple + "
"10 Present Continuous). Each question includes a <b>formula reminder</b> and "
"a <b>model answer</b>. Students answer out loud, then check!",
BODY)]], colWidths=[17*cm])
intro.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), YELLOW_BG),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 14),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS",[6]),
("BOX", (0,0), (-1,-1), 0.8, ORANGE),
]))
story.append(intro)
story.append(Spacer(1, 0.5*cm))
# ════════════════════════════════════════════════════════════════════════════
# SECTION 1 – FORMULA REFERENCE
# ════════════════════════════════════════════════════════════════════════════
story.append(banner("📋 Formula Reference Card", bg=PURPLE))
story.append(Spacer(1, 0.3*cm))
# -- Present Simple formulas
story.append(formula_box(
"PRESENT SIMPLE — Positive (+)",
"Subject + base verb (add -s/-es for he/she/it)",
["I play football.", "She reads books every day.", "They go to school."],
bg=LIGHT_BG, border=TEAL
))
story.append(Spacer(1, 0.2*cm))
story.append(formula_box(
"PRESENT SIMPLE — Negative (−)",
"Subject + do/does + not + base verb",
["I do not (don't) like spinach.", "He does not (doesn't) watch TV at night."],
bg=LIGHT_BG, border=TEAL
))
story.append(Spacer(1, 0.2*cm))
story.append(formula_box(
"PRESENT SIMPLE — Yes/No Question (?)",
"Do/Does + Subject + base verb + ?",
["Do you eat breakfast every morning?", "Does she walk to school?"],
bg=LIGHT_BG, border=TEAL
))
story.append(Spacer(1, 0.2*cm))
story.append(formula_box(
"PRESENT SIMPLE — Wh- Question (?)",
"Wh-word + do/does + Subject + base verb + ?",
["What do you do after school?", "Where does he live?"],
bg=LIGHT_BG, border=TEAL
))
story.append(Spacer(1, 0.4*cm))
# -- Present Continuous formulas
story.append(formula_box(
"PRESENT CONTINUOUS — Positive (+)",
"Subject + am/is/are + verb-ing",
["I am eating lunch.", "She is playing in the garden.", "They are studying now."],
bg=ORANGE_BG, border=ORANGE
))
story.append(Spacer(1, 0.2*cm))
story.append(formula_box(
"PRESENT CONTINUOUS — Negative (−)",
"Subject + am/is/are + not + verb-ing",
["I am not sleeping.", "He is not (isn't) running."],
bg=ORANGE_BG, border=ORANGE
))
story.append(Spacer(1, 0.2*cm))
story.append(formula_box(
"PRESENT CONTINUOUS — Yes/No Question (?)",
"Am/Is/Are + Subject + verb-ing + ?",
["Are you doing your homework?", "Is she wearing a coat?"],
bg=ORANGE_BG, border=ORANGE
))
story.append(Spacer(1, 0.2*cm))
story.append(formula_box(
"PRESENT CONTINUOUS — Wh- Question (?)",
"Wh-word + am/is/are + Subject + verb-ing + ?",
["What are you doing right now?", "Where is he going?"],
bg=ORANGE_BG, border=ORANGE
))
story.append(Spacer(1, 0.5*cm))
# ════════════════════════════════════════════════════════════════════════════
# SECTION 2 – PRESENT SIMPLE QUESTIONS (1–10)
# ════════════════════════════════════════════════════════════════════════════
story.append(banner("✏️ Part 1 — Present Simple Questions", bg=TEAL))
story.append(Spacer(1, 0.15*cm))
# mini formula reminder
reminder_ps = Table([[Paragraph(
"<b>Formula reminder:</b> Do/Does + Subject + base verb + ? "
" | Subject + base verb (-s/-es for he/she/it)",
NOTE)]], colWidths=[17*cm])
reminder_ps.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), LIGHT_BG),
("LEFTPADDING", (0,0),(-1,-1), 12),
("TOPPADDING", (0,0),(-1,-1), 6),
("BOTTOMPADDING", (0,0),(-1,-1), 6),
("ROUNDEDCORNERS",[4]),
]))
story.append(reminder_ps)
story.append(Spacer(1, 0.25*cm))
ps_qa = [
(1,
"What time do you wake up every morning?",
"I wake up at seven o'clock every morning."),
(2,
"Do you walk to school or come by bus?",
"I walk to school. / I come to school by bus."),
(3,
"What subject does your teacher teach?",
"My teacher teaches English. / My teacher teaches Maths."),
(4,
"How many meals do you eat in a day?",
"I eat three meals in a day — breakfast, lunch, and dinner."),
(5,
"Does your mother cook food at home?",
"Yes, my mother cooks food at home every day."),
(6,
"What do you do after school?",
"After school, I do my homework and then play outside."),
(7,
"Where do you keep your school bag?",
"I keep my school bag near my desk / on the shelf."),
(8,
"Does your class start at eight o'clock?",
"Yes, our class starts at eight o'clock. / No, it starts at nine o'clock."),
(9,
"What games do you play with your friends?",
"I play cricket / football / hide and seek with my friends."),
(10,
"How do you come to school every day?",
"I come to school by bus / on foot / by car every day."),
]
alt_bg = [WHITE, LIGHT_BG]
for i, (num, q, a) in enumerate(ps_qa):
story.append(qa_row(num, q, a, bg=alt_bg[i % 2]))
story.append(Spacer(1, 0.12*cm))
story.append(Spacer(1, 0.5*cm))
# ════════════════════════════════════════════════════════════════════════════
# SECTION 3 – PRESENT CONTINUOUS QUESTIONS (11–20)
# ════════════════════════════════════════════════════════════════════════════
story.append(banner("🎙️ Part 2 — Present Continuous Questions", bg=ORANGE))
story.append(Spacer(1, 0.15*cm))
reminder_pc = Table([[Paragraph(
"<b>Formula reminder:</b> Am/Is/Are + Subject + verb-ing + ? "
" | Subject + am/is/are + verb-ing",
NOTE)]], colWidths=[17*cm])
reminder_pc.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), ORANGE_BG),
("LEFTPADDING", (0,0),(-1,-1), 12),
("TOPPADDING", (0,0),(-1,-1), 6),
("BOTTOMPADDING", (0,0),(-1,-1), 6),
("ROUNDEDCORNERS",[4]),
]))
story.append(reminder_pc)
story.append(Spacer(1, 0.25*cm))
pc_qa = [
(11,
"What are you doing right now?",
"I am answering the teacher's questions right now."),
(12,
"Is the teacher writing on the board at this moment?",
"Yes, the teacher is writing on the board. / No, she is not writing right now."),
(13,
"Are you sitting on a chair or standing?",
"I am sitting on a chair. / I am standing near my desk."),
(14,
"What is your friend doing next to you?",
"My friend is reading a book. / My friend is listening to the teacher."),
(15,
"Are the students in your class paying attention to the lesson?",
"Yes, the students are paying attention to the lesson."),
(16,
"Is the sun shining outside the window right now?",
"Yes, the sun is shining brightly outside. / No, it is cloudy outside now."),
(17,
"What are you wearing to school today?",
"I am wearing my school uniform today."),
(18,
"Is anyone in your family cooking food right now?",
"Yes, my mother is cooking food in the kitchen right now."),
(19,
"Are you holding a pen or a pencil at this moment?",
"I am holding a pencil. / I am holding a pen at this moment."),
(20,
"What is making a noise outside the classroom right now?",
"The birds are making noise. / The students in the corridor are talking right now."),
]
for i, (num, q, a) in enumerate(pc_qa):
story.append(qa_row(num, q, a, bg=alt_bg[i % 2]))
story.append(Spacer(1, 0.12*cm))
story.append(Spacer(1, 0.5*cm))
# ════════════════════════════════════════════════════════════════════════════
# SECTION 4 – QUICK COMPARISON TABLE
# ════════════════════════════════════════════════════════════════════════════
story.append(banner("📊 Quick Comparison: Present Simple vs. Present Continuous", bg=PURPLE))
story.append(Spacer(1, 0.3*cm))
table_data = [
[Paragraph("<b>Feature</b>", FORMULA_TITLE),
Paragraph("<b>Present Simple</b>", FORMULA_TITLE),
Paragraph("<b>Present Continuous</b>", FORMULA_TITLE)],
[Paragraph("Use", BODY),
Paragraph("Habits, routines, facts", BODY),
Paragraph("Actions happening NOW", BODY)],
[Paragraph("Formula (+)", BODY),
Paragraph("Subject + base verb\n(-s/-es for he/she/it)", BODY),
Paragraph("Subject + am/is/are + verb-ing", BODY)],
[Paragraph("Formula (?)", BODY),
Paragraph("Do/Does + Subject + base verb?", BODY),
Paragraph("Am/Is/Are + Subject + verb-ing?", BODY)],
[Paragraph("Key words", BODY),
Paragraph("every day, always, usually,\nnever, often", BODY),
Paragraph("now, right now, at this moment,\ncurrently, look!", BODY)],
[Paragraph("Example (+)", BODY),
Paragraph("She reads books every night.", BODY),
Paragraph("She is reading a book right now.", BODY)],
[Paragraph("Example (?)", BODY),
Paragraph("Does she read every night?", BODY),
Paragraph("Is she reading right now?", BODY)],
]
cw = [3.5*cm, 6.5*cm, 7*cm]
comp_table = Table(table_data, colWidths=cw)
comp_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), PURPLE),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("BACKGROUND", (0,1), (-1,1), LIGHT_BG),
("BACKGROUND", (0,2), (-1,2), WHITE),
("BACKGROUND", (0,3), (-1,3), LIGHT_BG),
("BACKGROUND", (0,4), (-1,4), WHITE),
("BACKGROUND", (0,5), (-1,5), LIGHT_BG),
("BACKGROUND", (0,6), (-1,6), WHITE),
("ALIGN", (0,0), (-1,-1), "LEFT"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("ROWBACKGROUNDS",(0,1),(-1,-1), [LIGHT_BG, WHITE]),
]))
story.append(comp_table)
story.append(Spacer(1, 0.5*cm))
# ── Footer note ───────────────────────────────────────────────────────────────
footer = Table([[Paragraph(
"Tip for students: Before answering, ask yourself — "
"<b>Is this something I do every day?</b> → Use Present Simple. "
"<b>Is it happening right now?</b> → Use Present Continuous.",
BODY)]], colWidths=[17*cm])
footer.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), YELLOW_BG),
("LEFTPADDING", (0,0),(-1,-1), 14),
("RIGHTPADDING", (0,0),(-1,-1), 14),
("TOPPADDING", (0,0),(-1,-1), 10),
("BOTTOMPADDING", (0,0),(-1,-1), 10),
("ROUNDEDCORNERS",[6]),
("BOX", (0,0),(-1,-1), 0.8, LIME),
]))
story.append(footer)
# ════════════════════════════════════════════════════════════════════════════
# BUILD
# ════════════════════════════════════════════════════════════════════════════
doc.build(story)
print("PDF created:", OUTPUT)
cd /home/daytona/workspace/esl-grammar-pdf && python create_pdf.py
Present Tense Speaking Questions Grade3
PDF Document · PDF
I am unable to download it
ls -lh /home/daytona/workspace/esl-grammar-pdf/
Present Tense Speaking Questions Grade3
PDF Document · PDF
Email me the file (provide your address) on my email that is vs7499694@gmail.com
Present Tense Speaking Questions Grade3
PDF Document · PDF
Then give me pdf
Present Tense Speaking Questions Grade3
PDF Document · PDF
I can't download it, give photos instead from the pdf
which pdftoppm && pdftoppm -r 150 /home/daytona/workspace/esl-grammar-pdf/Present_Tense_Speaking_Questions_Grade3.pdf /home/daytona/workspace/esl-grammar-pdf/page && ls /home/daytona/workspace/esl-grammar-pdf/
for i in 1 2 3 4 5; do convert /home/daytona/workspace/esl-grammar-pdf/page-$i.ppm /home/daytona/workspace/esl-grammar-pdf/page-$i.jpg; done && ls /home/daytona/workspace/esl-grammar-pdf/*.jpg
python3 -c " from PIL import Image import os for i in range(1,6): src = f'/home/daytona/workspace/esl-grammar-pdf/page-{i}.ppm' dst = f'/home/daytona/workspace/esl-grammar-pdf/page-{i}.jpg' img = Image.open(src) img.save(dst, 'JPEG', quality=92) print(f'Saved {dst}') "




