语法练习2026-08-2910 分钟阅读

现在完成时 vs 一般过去时:30 道练习题(即时批改)

一句话判断法:句子里有明确的过去时间点(yesterday、last year、in 2010)就选一般过去时;动作或状态连着现在、强调对现在的影响就选现在完成时。下面 30 道题从基础到四六级水平,每题点击后即时批改,并解释中文「了/过」为什么在这里帮不上忙。

先给结论:判断这道题用哪种时态,只看两个问题——① 句中有没有明确的过去时间词(yesterday、last year、in 2010、when she was young)?有,就选一般过去时。② 动作的结果或状态是不是一直延续到现在?是,就选现在完成时(have/has + 过去分词)。中文靠「去年去了」「已经吃了」这类时间词和「了/过」来补足信息,而英语把这两种信息全部压进动词形态里,这正是选择题的考点。

下面的 30 道题按「基础 · 初中水平 → 进阶 · 高中水平 → 挑战 · 大学·四六级」分为三组,每道题点击选项后立即批改,并给出中文解析:不只告诉你正确答案,还会指出中文母语者在这里最容易踩的坑——比如「我昨天吃了饭」的「了」会诱使你误选现在完成时。

看两件事:句中有明确的过去时间词(yesterday、last year、in 2010)就用一般过去时;动作或状态延续到现在、或强调对现在的影响(since、for、already、yet、just)就用现在完成时。中文的「了/过」是体标记不是时态,不能作为判断依据。

现在完成时 vs 一般过去时:30 题小测

基础 · 初中水平
Q1.I ___ my homework already.
Q2.She ___ to Japan last year.
Q3.Have you ever ___ sushi?
Q4.We ___ each other since 2019.
Q5.He ___ his keys, so he can't open the door now.
Q6.They ___ in Beijing in 2010.
Q7.I ___ this movie three times.
Q8.The train ___ just left.
Q9.Shakespeare ___ many famous plays.
Q10.I ___ him at the supermarket yesterday.
进阶 · 高中水平
Q1.She ___ in this company for ten years.
Q2.I ___ my phone. I can't find it anywhere!
Q3.When ___ you buy this jacket?
Q4.We ___ that restaurant twice this month.
Q5.I ___ Jane at a party in 2018, and we ___ friends ever since.
Q6.___ ever been to London?
Q7.The company ___ its first store in 1995 and ___ twenty more since then.
Q8.Look! Someone ___ the window.
Q9."Is Tom here?" "No, he ___ to the bank."
Q10.She ___ tea to coffee when she was young.
挑战 · 大学·四六级
Q1.This is the best movie I ___ seen.
Q2.She ___ her leg last month, so she still can't walk well.
Q3.We ___ each other since we left school.
Q4.Do you like this band? — I've never ___ them.
Q5.The museum ___ millions of visitors since it ___ in 1972.
Q6.I ___ that book yet — is it any good?
Q7.He quit his job last week, and he ___ for a new one since then.
Q8."___ the report?" "Yes, I sent it an hour ago."
Q9.My grandmother ___ to school by bus when she was a child.
Q10.Scientists ___ a new species of frog in the rainforest recently.

规则速览:三步锁定时态

做选择题时按固定顺序问自己三个问题,90% 的题可以直接出答案:第一步,找过去时间词(yesterday、last week、in 2010、when I was a child)——只要出现,直接选一般过去时,这步优先级最高。第二步,没有时间词时,看动作是否延续到现在或结果是否影响现在(since、for、so far、already、yet、just)——是,就选现在完成时。第三步,仍然拿不准时,想中文句子强调什么:讲「这件事发生在过去某刻」用过去式,讲「这件事和现在有关」用完成时。

一般过去时:yesterday / last year / in 2010 / two days ago / when she was young → 动词用过去式(went, lost, saw)。
现在完成时:since / for / already / yet / just / ever / never / recently / so far → have/has + 过去分词(have gone, has lost)。
been to = 去过(已回来);gone to = 去了(还没回来)。
when + 具体过去动作 → 用 did 提问,不用 have you…。
since 从句用过去时,主句用现在完成时:since it opened in 1972, it has welcomed…
把「明确过去时间词是最高优先级」刻进肌肉记忆:哪怕句子里有「影响到现在」的意味,只要出现 last month、in 2018 这类词,正确答案一定是一般过去时。

常见陷阱:四个最容易丢分的句型

以下四个句型在考试和日常写作中出现频率最高,也是中文母语者错误率最集中的地方。做完上面的练习后,可以回来看看这四条是否都答对了。

✗ I have seen him yesterday. → ✓ I saw him yesterday.(yesterday 一票否决完成时)
✗ I have finished it two hours ago. → ✓ I finished it two hours ago.(ago 同样只配过去时)
✗ He has lived there since he has been born. → ✓ He has lived there since he was born.(since 从句必须用过去时,主句才用完成时)
✗ Did you ever been to Paris? → ✓ Have you ever been to Paris?(ever + been 是完成时套餐,不能拆开配 did)
✗ She has gone to Paris last week.(去了+具体时间混用)→ ✓ She went to Paris last week. 或 She has gone to Paris.(不提时间)

为什么中文母语者总在这里出错:「了/过」不是时态

根本原因在于:中文的「了」和「过」是体标记(aspect markers),不是时态。「了」表示动作的完成或状态的变化(「吃了」「天黑了」),「过」表示经历(「去过」「见过」),它们都不锁定时间——「我吃了饭」可以是刚才吃的,也可以是明晚到了东京「我(再)吃了饭再说」。而英语的现在完成时是一个真正的「时态」:它要求动作发生在过去、且与现在时刻相连。也就是说,中文母语者的语感里根本没有「过去与现在相连」这个需要动词变形的维度。

这解释了两个方向的错误。第一个方向:中文「了」太勤快,「去年去了日本」「昨天吃了饭」里都有「了」,于是很多学习者把「有『了』= 现在完成时」当成规律,写出 I have seen him yesterday 这样的句子。第二个方向:反过来把「了」当成一般过去时的信号,导致 I lost my phone(现在还找不着)该用 have lost 的地方也用过去式。正确的做法是彻底放弃从「了/过」出发倒推时态,改为直接问英语的两个问题:有没有过去时间词?是否连接现在?

「过」在「你吃过寿司吗(经验)」「这个月去过两次(累积次数)」这两类句子里确实对应现在完成时的经验用法——可以把它们当作锚点记下来;其余所有情况,一律回到上面三步判断法。

如何有效练习:让判断快过母语直觉

时态选择是一种「速度游戏」:考试和口语中你没有时间慢慢分析,必须让三步判断法快过中文「了/过」的本能反应。建议每天完整做一遍上面的 30 题,连续做一周——同一批题重复做并不浪费,目标是把正确答案的反应时间压缩到两秒以内。做完后把错题的中文句子抄下来,在旁边用英语重写一遍并标注判断依据。

更有效的做法是把练习搬进自己的写作:把邮件、作文或日记贴进 PromGee 的免费语法检查工具,它会标出每一个时态选择问题并用中文解释对应的规则——你写错的句子,就是你最需要的那套练习题。

继续练习

常见问题

现在完成时和一般过去时到底怎么区分?

看两件事:句中有明确的过去时间词(yesterday、last year、in 2010)就用一般过去时;动作或状态延续到现在、或强调对现在的影响(since、for、already、yet、just)就用现在完成时。中文的「了/过」是体标记不是时态,不能作为判断依据。

yesterday 能和现在完成时连用吗?

不能。yesterday、ago、last week、in 2010 这类明确的过去时间词只与一般过去时连用:I saw him yesterday,而不是 I have seen him yesterday。这是中文母语者最常见、扣分最重的错误之一。

中文的「了」是不是就等于现在完成时?

不是。「了」是完成体标记,可以出现在过去(我昨天吃了)、将来(等我到了就吃了饭)等多种时间里。只有「去过/见过/吃过」这类表经历的「过」句,才常常对应现在完成时的经验用法。判断时态请回到英语自身的时间词和现在关联上。

让 AI 检查你作文里的每一个时态

规则看懂了,轮到自己写就容易漏。把你的英语作文或邮件贴进 PromGee 免费语法检查工具,AI 会标出每处时态问题并用中文即时解析——把你的真实错误变成下一套练习题。

免费检查我的英语作文

参考来源

本指南基于权威的英语语法参考资料编写。如需深入学习,请参考以下来源。