Tense worksheets class 8th icse hard questions

Searching the Web

tense worksheets class 8 ICSE hard questions grammar

Here is a set of challenging tense worksheets designed for Class 8 ICSE students, covering all major tense types with the kind of difficulty level expected in ICSE exams.

Tense Worksheets - Class 8 ICSE (Hard Level)


WORKSHEET 1: Fill in the Blanks (Mixed Tenses)

Fill in the blanks with the correct tense form of the verbs given in brackets.
  1. By the time the ambulance arrived, the patient ____________ (die).
  2. She ____________ (not/see) him since they ____________ (part) ways in 2019.
  3. The children ____________ (play) in the garden when it suddenly ____________ (start) to rain.
  4. I ____________ (wait) for two hours before the doctor finally ____________ (call) me in.
  5. He ____________ (work) in this company for ten years when he ____________ (decide) to resign.
  6. No sooner ____________ the bell ____________ (ring) than the students ____________ (rush) out.
  7. I wish I ____________ (study) harder before the examination.
  8. By next month, they ____________ (complete) the construction of the bridge.
  9. The sun ____________ (set) in the west. It ____________ (set) already by the time we reached the hill.
  10. She ____________ (read) the novel three times and still ____________ (find) it interesting.
Answers:
  1. had died | 2. has not seen / parted | 3. were playing / started | 4. had been waiting / called | 5. had been working / decided | 6. had / rung / rushed | 7. had studied | 8. will have completed | 9. sets / had set | 10. has read / finds

WORKSHEET 2: Error Correction

Each sentence has ONE tense error. Identify and correct it.
  1. She has completed her homework before her mother came home.
  2. When I reached the station, the train already left.
  3. He is working on this project since last March.
  4. By the time you will arrive, I will have left.
  5. I am knowing him for over fifteen years.
  6. She was waiting for you since morning.
  7. They have been to Paris three years ago.
  8. No sooner did she enter the hall when everyone started clapping.
Answers:
  1. had completed | 2. had already left | 3. has been working | 4. arrive (remove "will") | 5. have known | 6. has been waiting | 7. went (not "have been") | 8. than (not "when")

WORKSHEET 3: Sentence Transformation

Rewrite the sentences as directed without changing the meaning.
  1. He left before I arrived. (Use: "By the time...") By the time I arrived, he had already left.
  2. The last time I saw her was in 2021. (Use: "I have not...") I have not seen her since 2021.
  3. She started cooking an hour ago and is still cooking. (Use: Present Perfect Continuous) She has been cooking for an hour.
  4. As soon as the match ended, it started raining. (Use: "No sooner...than") No sooner had the match ended than it started raining.
  5. They began building the flyover six months ago. It is still going on. (Use: Past Perfect Continuous) They had been building the flyover for six months.
  6. I last visited my grandparents three years ago. (Use: "It has been...") It has been three years since I last visited my grandparents.

WORKSHEET 4: Identify the Tense

Name the tense used in each sentence.
#SentenceTense
1She will have been teaching for 20 years by 2030.Future Perfect Continuous
2The committee had been deliberating for hours before a verdict was reached.Past Perfect Continuous
3He has been trying to contact you all day.Present Perfect Continuous
4They had submitted the report before the deadline.Past Perfect
5I shall be travelling to Delhi tomorrow morning.Future Continuous
6The match begins at 7 PM tonight.Simple Present (used for future)
7She has visited that museum before.Present Perfect
8He will have left by the time you reach.Future Perfect

WORKSHEET 5: Passage - Fill in the Blanks (Hard)

Fill in each blank with the correct tense of the verb given in brackets.
Yesterday, I ___(1. go)_ to the market that I ___(2. not/visit)_ for over a year. The shopkeeper, who ___(3. know)_ me for years, immediately ___(4. recognise)_ me. He told me that he ___(5. expand)_ his shop since the last time I ___(6. visit)_. While we ___(7. talk)_, a man ___(8. rush)_ in and announced that someone ___(9. steal)_ his bag. By the time the police ___(10. arrive)_, the thief ___(11. disappear).
Answers:
  1. went | 2. had not visited | 3. had known | 4. recognised | 5. had been expanding | 6. had visited | 7. were talking | 8. rushed | 9. had stolen | 10. arrived | 11. had disappeared

WORKSHEET 6: Advanced MCQs (ICSE Pattern)

Choose the correct option:
1. He ___ here since his childhood.
  • a) lives b) has been living c) had lived d) was living → b) has been living
2. No sooner ___ the news than she burst into tears.
  • a) she heard b) had she heard c) she had heard d) did she hear → b) had she heard
3. By the time the guests arrive, we ___ dinner.
  • a) will finish b) will have finished c) finish d) are finishing → b) will have finished
4. The train ___ when I reached the platform.
  • a) has already left b) had already left c) already left d) was already left → b) had already left
5. She ___ for the exam all week and still isn't ready.
  • a) studies b) has studied c) has been studying d) was studying → c) has been studying

Key ICSE Tense Rules to Remember

  • "Since" and "for" trigger Present Perfect or Past Perfect Continuous.
  • "No sooner...than" always takes Past Perfect in the first clause.
  • "By the time" pairs with Past Perfect (past context) or Future Perfect (future context).
  • Stative verbs (know, believe, love, hate, see, understand) are NOT used in continuous tenses.
  • "Wish" is followed by Past Perfect for past regrets, Simple Past for present wishes.

These worksheets cover all ICSE-level tense patterns including Perfect Continuous forms, inversion structures, and transformation exercises commonly tested in Class 8 ICSE exams. Print or copy them for practice!

Give me pdf only questions

Reading File
Running Command

mkdir -p /tmp/workspace/tense-worksheet && ls /tmp/workspace/tense-worksheet/

Writing File

~/tense-worksheet/generate_pdf.py

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY

output_path = "/tmp/workspace/tense-worksheet/Tense_Worksheet_Class8_ICSE.pdf"

doc = SimpleDocTemplate(
    output_path,
    pagesize=A4,
    rightMargin=2*cm,
    leftMargin=2*cm,
    topMargin=2*cm,
    bottomMargin=2*cm
)

styles = getSampleStyleSheet()

# Custom styles
title_style = ParagraphStyle(
    'TitleStyle',
    parent=styles['Title'],
    fontSize=16,
    textColor=colors.HexColor('#1a237e'),
    spaceAfter=4,
    alignment=TA_CENTER,
    fontName='Helvetica-Bold'
)

subtitle_style = ParagraphStyle(
    'SubtitleStyle',
    parent=styles['Normal'],
    fontSize=10,
    textColor=colors.HexColor('#37474f'),
    spaceAfter=2,
    alignment=TA_CENTER,
    fontName='Helvetica'
)

section_style = ParagraphStyle(
    'SectionStyle',
    parent=styles['Heading2'],
    fontSize=11,
    textColor=colors.white,
    backColor=colors.HexColor('#1a237e'),
    spaceBefore=12,
    spaceAfter=6,
    leftIndent=-0.3*cm,
    rightIndent=-0.3*cm,
    leading=16,
    fontName='Helvetica-Bold'
)

instruction_style = ParagraphStyle(
    'InstructionStyle',
    parent=styles['Normal'],
    fontSize=9.5,
    textColor=colors.HexColor('#b71c1c'),
    spaceAfter=6,
    fontName='Helvetica-Oblique'
)

q_style = ParagraphStyle(
    'QuestionStyle',
    parent=styles['Normal'],
    fontSize=10,
    textColor=colors.HexColor('#212121'),
    spaceAfter=10,
    leading=16,
    fontName='Helvetica'
)

note_style = ParagraphStyle(
    'NoteStyle',
    parent=styles['Normal'],
    fontSize=9,
    textColor=colors.HexColor('#4a148c'),
    backColor=colors.HexColor('#f3e5f5'),
    spaceAfter=6,
    leftIndent=0.3*cm,
    rightIndent=0.3*cm,
    leading=14,
    fontName='Helvetica-Oblique'
)

story = []

# ─── HEADER ───────────────────────────────────────────────────────────────────
story.append(Paragraph("TENSE WORKSHEETS", title_style))
story.append(Paragraph("Class 8 ICSE | English Grammar | Hard Level", subtitle_style))
story.append(Spacer(1, 0.1*cm))
story.append(HRFlowable(width="100%", thickness=2, color=colors.HexColor('#1a237e')))
story.append(Spacer(1, 0.2*cm))

# Info table
info_data = [
    ["Name: _______________________________", "Class: _____________", "Date: _____________"],
    ["School: _______________________________", "Roll No.: _____________", "Max. Marks: 50"]
]
info_table = Table(info_data, colWidths=[8.5*cm, 4.5*cm, 4.5*cm])
info_table.setStyle(TableStyle([
    ('FONTNAME', (0,0), (-1,-1), 'Helvetica'),
    ('FONTSIZE', (0,0), (-1,-1), 9),
    ('TEXTCOLOR', (0,0), (-1,-1), colors.HexColor('#37474f')),
    ('BOTTOMPADDING', (0,0), (-1,-1), 4),
    ('TOPPADDING', (0,0), (-1,-1), 4),
]))
story.append(info_table)
story.append(Spacer(1, 0.3*cm))
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#90a4ae')))
story.append(Spacer(1, 0.2*cm))

# ─── WORKSHEET 1 ──────────────────────────────────────────────────────────────
story.append(Paragraph("  WORKSHEET 1: Fill in the Blanks (Mixed Tenses)  [10 Marks]", section_style))
story.append(Paragraph("Fill in the blanks with the correct tense form of the verbs given in brackets.", instruction_style))

q1 = [
    "1.  By the time the ambulance arrived, the patient ________________________ (die).",
    "2.  She ________________________ (not/see) him since they ________________________ (part) ways in 2019.",
    "3.  The children ________________________ (play) in the garden when it suddenly ________________________ (start) to rain.",
    "4.  I ________________________ (wait) for two hours before the doctor finally ________________________ (call) me in.",
    "5.  He ________________________ (work) in this company for ten years when he ________________________ (decide) to resign.",
    "6.  No sooner ________________________ the bell ________________________ (ring) than the students ________________________ (rush) out.",
    "7.  I wish I ________________________ (study) harder before the examination.",
    "8.  By next month, they ________________________ (complete) the construction of the bridge.",
    "9.  The sun ________________________ (set) in the west. It ________________________ (set) already by the time we reached the hill.",
    "10. She ________________________ (read) the novel three times and still ________________________ (find) it interesting.",
]
for q in q1:
    story.append(Paragraph(q, q_style))

story.append(Spacer(1, 0.2*cm))

# ─── WORKSHEET 2 ──────────────────────────────────────────────────────────────
story.append(Paragraph("  WORKSHEET 2: Error Correction  [8 Marks]", section_style))
story.append(Paragraph("Each sentence contains ONE tense error. Identify the incorrect word/phrase, underline it, and write the correct form in the space provided.", instruction_style))

q2 = [
    "1.  She has completed her homework before her mother came home.\n     Correction: ___________________________",
    "2.  When I reached the station, the train already left.\n     Correction: ___________________________",
    "3.  He is working on this project since last March.\n     Correction: ___________________________",
    "4.  By the time you will arrive, I will have left.\n     Correction: ___________________________",
    "5.  I am knowing him for over fifteen years.\n     Correction: ___________________________",
    "6.  She was waiting for you since morning.\n     Correction: ___________________________",
    "7.  They have been to Paris three years ago.\n     Correction: ___________________________",
    "8.  No sooner did she enter the hall when everyone started clapping.\n     Correction: ___________________________",
]
for q in q2:
    story.append(Paragraph(q, q_style))

story.append(Spacer(1, 0.2*cm))

# ─── WORKSHEET 3 ──────────────────────────────────────────────────────────────
story.append(Paragraph("  WORKSHEET 3: Sentence Transformation  [10 Marks]", section_style))
story.append(Paragraph("Rewrite the following sentences as directed without changing the meaning.", instruction_style))

q3 = [
    '1.  He left before I arrived.\n     (Use: "By the time...")\n     ___________________________________________________________________________',
    '2.  The last time I saw her was in 2021.\n     (Use: "I have not...")\n     ___________________________________________________________________________',
    '3.  She started cooking an hour ago and is still cooking.\n     (Use: Present Perfect Continuous)\n     ___________________________________________________________________________',
    '4.  As soon as the match ended, it started raining.\n     (Use: "No sooner...than")\n     ___________________________________________________________________________',
    '5.  They began building the flyover six months ago and it is still going on.\n     (Use: Past Perfect Continuous)\n     ___________________________________________________________________________',
    '6.  I last visited my grandparents three years ago.\n     (Use: "It has been...")\n     ___________________________________________________________________________',
    '7.  The moment the teacher entered, all the students stood up.\n     (Use: "Hardly...when")\n     ___________________________________________________________________________',
    '8.  This is the best film I have ever seen.\n     (Rewrite using Past Perfect)\n     ___________________________________________________________________________',
    '9.  He said, "I have finished my work."\n     (Change to Reported Speech)\n     ___________________________________________________________________________',
    '10. She has been living in Mumbai since 2015.\n     (Frame a question using "How long...")\n     ___________________________________________________________________________',
]
for q in q3:
    story.append(Paragraph(q, q_style))

story.append(Spacer(1, 0.2*cm))

# ─── WORKSHEET 4 ──────────────────────────────────────────────────────────────
story.append(Paragraph("  WORKSHEET 4: Identify the Tense  [8 Marks]", section_style))
story.append(Paragraph("Write the name of the tense used in each sentence.", instruction_style))

table_data = [
    ["#", "Sentence", "Tense"],
    ["1", "She will have been teaching for 20 years by 2030.", ""],
    ["2", "The committee had been deliberating for hours before a verdict was reached.", ""],
    ["3", "He has been trying to contact you all day.", ""],
    ["4", "They had submitted the report before the deadline.", ""],
    ["5", "I shall be travelling to Delhi tomorrow morning.", ""],
    ["6", "The match begins at 7 PM tonight.", ""],
    ["7", "She has visited that museum before.", ""],
    ["8", "No sooner had the siren sounded than everyone ran out.", ""],
]
t = Table(table_data, colWidths=[0.8*cm, 10.5*cm, 6*cm])
t.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), colors.HexColor('#1a237e')),
    ('TEXTCOLOR', (0,0), (-1,0), colors.white),
    ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
    ('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
    ('FONTSIZE', (0,0), (-1,-1), 9),
    ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.HexColor('#e8eaf6'), colors.white]),
    ('GRID', (0,0), (-1,-1), 0.5, colors.HexColor('#90a4ae')),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('TOPPADDING', (0,0), (-1,-1), 5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 5),
    ('LEFTPADDING', (0,0), (-1,-1), 5),
]))
story.append(t)
story.append(Spacer(1, 0.3*cm))

# ─── WORKSHEET 5 ──────────────────────────────────────────────────────────────
story.append(Paragraph("  WORKSHEET 5: Passage-Based Fill in the Blanks  [7 Marks]", section_style))
story.append(Paragraph("Read the passage carefully and fill in each numbered blank with the correct tense form of the verb given in brackets.", instruction_style))

passage = (
    "Yesterday, I <u>__(1)__</u> (go) to the market that I <u>__(2)__</u> (not/visit) for over a year. "
    "The shopkeeper, who <u>__(3)__</u> (know) me for years, immediately <u>__(4)__</u> (recognise) me. "
    "He told me that he <u>__(5)__</u> (expand) his shop since the last time I <u>__(6)__</u> (visit). "
    "While we <u>__(7)__</u> (talk), a man <u>__(8)__</u> (rush) in and announced that someone "
    "<u>__(9)__</u> (steal) his bag. By the time the police <u>__(10)__</u> (arrive), "
    "the thief <u>__(11)__</u> (disappear)."
)
passage_style = ParagraphStyle(
    'PassageStyle',
    parent=styles['Normal'],
    fontSize=10,
    textColor=colors.HexColor('#212121'),
    spaceAfter=10,
    leading=18,
    fontName='Helvetica',
    borderPad=8,
    borderColor=colors.HexColor('#7986cb'),
    borderWidth=1,
    backColor=colors.HexColor('#e8eaf6'),
    leftIndent=0.3*cm,
    rightIndent=0.3*cm,
)
story.append(Paragraph(passage, passage_style))
story.append(Spacer(1, 0.2*cm))

# ─── WORKSHEET 6 ──────────────────────────────────────────────────────────────
story.append(Paragraph("  WORKSHEET 6: Multiple Choice Questions (MCQ)  [7 Marks]", section_style))
story.append(Paragraph("Circle the correct option (a, b, c or d).", instruction_style))

mcqs = [
    "1.  He ___ here since his childhood.\n     a) lives     b) has been living     c) had lived     d) was living",
    "2.  No sooner ___ the news than she burst into tears.\n     a) she heard     b) had she heard     c) she had heard     d) did she hear",
    "3.  By the time the guests arrive, we ___ dinner.\n     a) will finish     b) will have finished     c) finish     d) are finishing",
    "4.  The train ___ when I reached the platform.\n     a) has already left     b) had already left     c) already left     d) was already left",
    "5.  She ___ for the exam all week and still isn't ready.\n     a) studies     b) has studied     c) has been studying     d) was studying",
    "6.  I wish I ___ more careful yesterday.\n     a) was     b) am     c) had been     d) were",
    "7.  Hardly ___ the door when the phone rang.\n     a) I opened     b) had I opened     c) I had opened     d) did I open",
]
for q in mcqs:
    story.append(Paragraph(q, q_style))

story.append(Spacer(1, 0.3*cm))

# ─── NOTE ─────────────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=0.5, color=colors.HexColor('#90a4ae')))
story.append(Spacer(1, 0.2*cm))
story.append(Paragraph(
    "Note: Answer keys are intentionally not included. These questions are meant for examination practice. "
    "Refer to your grammar textbook or teacher for verification.",
    note_style
))

# ─── BUILD ────────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF generated at: {output_path}")
Running Command

python /tmp/workspace/tense-worksheet/generate_pdf.py

Your worksheet PDF is ready! Download it here:

Tense Worksheet Class8 ICSE

PDF Document · PDF

What's inside (questions only, no answers):
WorksheetTopicMarks
1Fill in the Blanks - Mixed Tenses10
2Error Correction (1 error per sentence)8
3Sentence Transformation10
4Identify the Tense (table format)8
5Passage-based Fill in the Blanks7
6MCQs7
Total50
It includes a Name/Class/Date header at the top, making it ready to print and hand out directly.
This is a shared conversation. Sign in to Orris to start your own chat.