跳转到正文

语法练习

if条件句练习 30 题:主将从现、虚拟条件句与混合条件句

直接答案:先判断条件是「可能发生的」还是「假设的」。可能发生的将来条件用「主将从现」:If it rains tomorrow, we will stay in(if 从句用一般现在时)。与现在事实相反:If I had more time, I would…(过去式 + would do)。与过去事实相反:If I had known, I would have told you(had done + would have done),if 从句里一般不放 would。下面 30 题点击即批改,每题都有中文解析。

作者: Raheel Ashraf预计阅读:约24分钟

免费练习: 英语语法在线练习(含答案)

中文的「如果……就……」本身不带任何时态标记:「如果明天下雨,我们就不去」「如果我有钱,我就买」「如果我当时知道,我就告诉你了」,三句话的结构几乎一模一样,时间全靠「明天」「当时」这些词来表达。英语却要用动词形式区分三种情况:可能发生的条件、与现在相反的假设、与过去相反的假设。所以中国学习者常写出 *If it will rain tomorrow(把「明天」的将来时搬进 if 从句)和 *If I would have known(把主句的 would 也放进 if 从句)。

速记规则:一般事实(零条件句)→ If + 一般现在时,主句一般现在时;可能发生的将来(第一条件句)→ If + 一般现在时,主句 will do(主将从现);与现在相反(第二条件句)→ If + 过去式,主句 would/could do;与过去相反(第三条件句)→ If + had done,主句 would/could have done。下面 30 题分三级:基础(零条件句、第一条件句、unless 与 in case)、进阶(第二、第三条件句)、挑战(混合条件句、省略 if 的倒装、as long as / provided),每级 10 题。wish、as if、would rather 等虚拟语气请看虚拟语气练习。

if 条件句测验 30 题

1 / 10

基础 · 真实条件句与主将从现

If it ___ tomorrow, we will stay at home and watch a film.

全部题目、答案与解析完成练习后展开核对。
  1. 1. If it ___ tomorrow, we will stay at home and watch a film.

    • will rain
    • rains
    • rained

    正确答案: rains · 可能发生的将来条件,if 从句用一般现在时,主句用 will:If it rains tomorrow, we will…,这就是「主将从现」。中文「如果明天下雨」里有「明天」,很多人就在 if 后面写 will rain,这是最典型的错误。

  2. 2. If you ___ hard this term, you will pass the final exam.

    • study
    • will study
    • studied

    正确答案: study · 主句是 will pass,说明这是第一条件句,if 从句用一般现在时 study。will study 违反主将从现;studied 是第二条件句的形式,要和 would 搭配。

  3. 3. If she misses the bus this morning, she ___ late for school.

    • would be
    • was
    • will be

    正确答案: will be · 从句 misses 是一般现在时,说的是今天早上真有可能发生的事,主句用 will be。would be 用于假设的情况,和 misses 不匹配;was 是过去时,时间对不上。

  4. 4. (General fact) If you heat water to 100°C at sea level, it ___.

    • boils
    • would boil
    • boiled

    正确答案: boils · 表示科学事实、普遍规律时用零条件句:if 从句和主句都用一般现在时,it boils。would boil 会把客观规律变成假设;boiled 是过去时。中文「水加热到 100 度就会沸腾」的「会」不代表要用 would。

  5. 5. (General fact) Most plants die if they ___ enough light.

    • won't get
    • don't get
    • didn't get

    正确答案: don't get · 普遍规律用零条件句,if 从句用一般现在时:if they don't get enough light。won't get 是把将来时放进了 if 从句;didn't get 是过去时,与 die 的一般现在时不匹配。

  6. 6. I'll send you a message as soon as I ___ home.

    • will get
    • got
    • get

    正确答案: get · 主将从现不只用于 if,也用于 as soon as、when、before、after、until 引导的时间状语从句:as soon as I get home。中文「我一到家就给你发消息」里没有时态,英语从句却必须用一般现在时。

  7. 7. Unless you hurry up, you ___ the last train.

    • will miss
    • would miss
    • missed

    正确答案: will miss · unless 基本等于 if … not,同样遵循主将从现:Unless you hurry(如果你不快点),you will miss the train。从句 hurry 是一般现在时,主句用 will。

  8. 8. You can't get into the concert ___ you have a ticket.

    • in case
    • unless
    • if

    正确答案: unless · unless = 除非、如果不:没有票就进不去。if 放在这里意思变成「有票就进不去」,逻辑不通;in case 表示「以防万一」,也不对。注意 unless 本身已带否定,后面不要再加 don't。

  9. 9. The forecast says it might rain later. Take an umbrella ___ it does.

    • unless
    • in case
    • so that

    正确答案: in case · in case 表示「以防万一」:现在就带伞,防止之后下雨。它和 if 不同——if 表示「下雨的话才带」。unless 意思正好相反;so that 表示目的,「为了让它下雨」显然不对。

  10. 10. If the shop ___ closed when we get there, we'll try the one next door.

    • is
    • will be
    • would be

    正确答案: is · 主句是 we'll try,if 从句用一般现在时 is。即使「到那儿的时候」是将来,从句里也不用 will be;would be 是假设语气,与 we'll 不搭配。

  11. 11. I don't have a million dollars, but if I ___ one, I would travel around the world.

    • have
    • had
    • would have

    正确答案: had · 与现在事实相反的假设(第二条件句):If + 过去式,主句 would do。had 这里不表示过去,而是表示「不真实」。would have 不能放进 if 从句;have 是真实条件的形式。

  12. 12. My best friend lives far away. If he lived closer, we ___ each other more often.

    • will see
    • saw
    • would see

    正确答案: would see · 从句 lived 是过去式,表示与现在相反(他其实住得远),主句用 would + 动词原形:would see。will see 是真实条件的主句;saw 缺少 would,变成了陈述过去的事。

  13. 13. My grandmother doesn't know how to use a smartphone. If she ___ how, she could video-call us every day.

    • knew
    • knows
    • would know

    正确答案: knew · 主句是 could video-call,前面说明她其实不会用,所以是第二条件句:if 从句用过去式 knew。knows 是真实条件;would know 把 would 放进了 if 从句。主句里 could 和 would 一样可以用,表示「就能」。

  14. 14. I ___ that coat if it weren't so expensive.

    • would buy
    • will buy
    • bought

    正确答案: would buy · if it weren't so expensive 是与现在事实相反(它实际上很贵),主句用 would buy。will buy 是真实条件;bought 缺少 would。

  15. 15. (You overslept and were late.) If you had set an alarm, you ___ late this morning.

    • won't be
    • wouldn't be
    • wouldn't have been

    正确答案: wouldn't have been · 与过去事实相反(第三条件句):If + had done,主句 would have done。迟到已经发生,所以是 wouldn't have been late。wouldn't be 用于与现在相反;won't be 是真实将来。

  16. 16. If we ___ the map more carefully, we wouldn't have taken the wrong road.

    • would have read
    • had read
    • read

    正确答案: had read · 主句 wouldn't have taken 说明是过去的假设,if 从句用过去完成时 had read。would have read 是中国学生最常见的错误——中文「如果当时看仔细点」没有形式提示,就把主句的 would have 也搬进了从句;标准英语里这个位置用 had done。

  17. 17. She ___ yesterday's final if she hadn't hurt her ankle in the first set.

    • would win
    • would have won
    • will win

    正确答案: would have won · hadn't hurt 是过去完成时,yesterday's final 说明比赛已经结束,主句用 would have won(本来会赢)。would win 是对现在或将来的假设;will win 是真实条件。

  18. 18. If it hadn't rained so heavily, the school picnic ___ cancelled last Saturday.

    • wouldn't have been
    • won't be
    • wouldn't be

    正确答案: wouldn't have been · last Saturday 和 hadn't rained 都指向过去,用第三条件句的被动形式:wouldn't have been cancelled。wouldn't be cancelled 说的是现在或将来,和 last Saturday 矛盾。

  19. 19. I don't have his number. If I ___ it, I would call him right now.

    • had known
    • know
    • knew

    正确答案: knew · right now 和 I don't have 都说明是与现在相反的假设,用过去式 knew + would call。had known 是与过去相反,要配 would have called;know 是真实条件,要配 will。

  20. 20. What would you do if you ___ a lost wallet with a lot of cash in it?

    • will find
    • found
    • would find

    正确答案: found · 主句 What would you do 是假设,if 从句用过去式 found。这种「如果你遇到……会怎么办」的问题通常用第二条件句,因为情况并不真实。will find 和 would find 都把情态动词放进了 if 从句。

  21. 21. (Mixed conditional) If I had accepted the job in Shanghai last year, I ___ there now.

    • would have lived
    • would be living
    • will live

    正确答案: would be living · 混合条件句:条件与过去相反(had accepted … last year),结果与现在相反(now),所以主句用 would do / would be doing。would have lived 是对过去结果的假设,和 now 冲突。

  22. 22. (Mixed conditional) If she weren't so shy, she ___ to the party last night.

    • would go
    • will go
    • would have gone

    正确答案: would have gone · 从句说的是她一贯的性格(现在仍然害羞),主句说的是昨晚的事,所以是「现在的条件 + 过去的结果」:would have gone。would go 只能表示现在或将来的结果,与 last night 不符。

  23. 23. ___ I known you were in town, I would have called you.

    • Had
    • If
    • Have

    正确答案: Had · 省略 if 的倒装:Had I known = If I had known。If I known 缺少 had;Have I known 不是条件句。这种倒装常见于正式写作,也是语法选择题的常见考点。

  24. 24. (Formal email) ___ you need any further information, please do not hesitate to contact us.

    • Would
    • Should
    • Had

    正确答案: Should · Should you need… = If you need…,是正式邮件里常见的倒装,表示「万一您需要」。Would 和 Had 都不能这样引导条件。

  25. 25. (Formal) Were I in your position, I ___ accept the offer without hesitation.

    • will
    • shall
    • would

    正确答案: would · Were I in your position = If I were in your position,与现在事实相反,主句用 would。will 和 shall 用于真实条件,与倒装的 Were I 不搭配。

  26. 26. You can borrow my laptop as long as you ___ it back by Friday.

    • give
    • will give
    • gave

    正确答案: give · as long as(只要)引导条件,同样遵循主将从现:as long as you give it back。will give 违反这条规则;gave 是过去时或第二条件句的形式,与 can borrow 不搭配。

  27. 27. Unless you ___ your seat by Friday, it will be given to someone on the waiting list.

    • don't book
    • will book
    • book

    正确答案: book · unless 已经包含「不」的意思,后面用肯定的一般现在时:Unless you book = If you don't book。don't book 造成双重否定,意思反了;will book 违反主将从现。

  28. 28. If he hadn't been so tired, he ___ such a silly mistake in yesterday's test.

    • didn't make
    • wouldn't have made
    • won't make

    正确答案: wouldn't have made · hadn't been 和 yesterday 都指向过去,用第三条件句:wouldn't have made。didn't make 是陈述事实,不是假设;won't make 是将来。

  29. 29. Provided that the weather ___ good, the race will start at nine.

    • will be
    • is
    • would be

    正确答案: is · provided (that) = 只要、前提是,和 if、as long as 一样遵循主将从现:provided that the weather is good。中文「只要天气好」里没有将来标记,不要因为比赛在将来就写 will be。

  30. 30. (Mixed conditional) If you had listened to me back then, you ___ in this mess now.

    • wouldn't be
    • wouldn't have been
    • won't be

    正确答案: wouldn't be · 过去的条件(had listened … back then)影响现在的结果(now),主句用 wouldn't be。wouldn't have been 是对过去结果的假设,和 now 矛盾。

将此测验布置给全班

免费使用,学生无需注册账号。

教师使用提示(英文页面)

完整规则:四种条件句一张表

判断条件句只要问两个问题:这个条件是真的可能发生,还是假设的?说的是现在、将来还是过去?回答完这两个问题,形式就确定了。

  • 零条件句(普遍事实):If + 一般现在时,主句一般现在时。If you mix red and blue, you get purple.
  • 第一条件句(可能发生的将来,主将从现):If + 一般现在时,主句 will / can / may + 动词原形。If you leave now, you will catch the bus.
  • 第二条件句(与现在事实相反,或不太可能的将来):If + 过去式(be 常用 were),主句 would / could / might + 动词原形。If I had a car, I would drive to work.
  • 第三条件句(与过去事实相反):If + had done,主句 would / could / might have done。If we had left earlier, we would have caught the bus.
  • 混合条件句:过去的条件 + 现在的结果(If I had studied medicine, I would be a doctor now),或现在的条件 + 过去的结果(If I weren't afraid of heights, I would have climbed the tower yesterday)。
  • 主将从现同样适用于 when、as soon as、before、after、until、unless、as long as、provided that 引导的从句。

第二条件句里 be 动词用 were 是正式、标准的写法(If I were…);日常口语中 If I was… 也很常见。考试和正式写作建议用 were。

易错点:unless、in case 与 if 从句里的 will

unless 基本等于 if … not,但它本身已经带否定,后面不再加 not:Unless you book = If you don't book。in case 不是「如果」,而是「以防万一」:Take a coat in case it gets cold 是现在就带,防止之后变冷。

说「if 从句里不用 will」其实是简化说法。准确地说:表示将来的条件时,if 从句用一般现在时。但 will 表示意愿或客气的请求时可以出现在 if 从句里,例如 If you will wait here a moment, I'll get the manager(请您在这里稍等)。考试中的一般条件句仍按主将从现处理。

  • If you don't hurry, you'll be late. = Unless you hurry, you'll be late.
  • I'll take my phone in case you call.(以防你打电话来,先带上)
  • I'll answer my phone if you call.(你打来我就接)
  • Had I known… / Should you need… / Were I you…:省略 if 后把 had / should / were 提到主语前,多见于正式文体。

为什么中国学习者容易用错

中文的「如果……就……」不随时间变形。「如果明天下雨,我们就不去」「如果我是你,我就去」「如果我当时知道,我就告诉你了」,句型完全一样,时间和真假靠「明天」「当时」「是你」这些语境来体现。英语则把这些信息写进动词:真实还是假设、现在还是过去,都要通过 rains / rained / had rained、will / would / would have 体现出来。

因此中国学习者最常出现两类错误。第一,按中文的时间感把 will 放进 if 从句:「如果明天下雨」→ *If it will rain tomorrow。第二,把主句的 would 复制到从句:「如果我早知道」→ *If I would have known,标准英语应该是 If I had known。另外,「了」并不等于过去时——「如果你来了,我们就开始」说的是将来,英语是 If you come, we'll start。

写完条件句,先看 if 从句:里面有 will 或 would 吗?如果是普通条件句,基本可以确定要改。

常见错误对照

  • ✗ If it will rain tomorrow, we will stay in. → ✓ If it rains tomorrow, we will stay in. — 将来的条件用一般现在时。
  • ✗ If I would have known, I would have told you. → ✓ If I had known, I would have told you. — 第三条件句的 if 从句用 had done。
  • ✗ If I have more money, I would buy a car.(指现在没钱)→ ✓ If I had more money, I would buy a car. — 与现在相反用过去式。
  • ✗ If you had come, you would enjoy the party yesterday. → ✓ If you had come, you would have enjoyed the party yesterday. — 过去的结果用 would have done。
  • ✗ Unless you don't hurry, you'll miss the bus. → ✓ Unless you hurry, you'll miss the bus. — unless 自带否定。
  • ✗ I'll call you when I will arrive. → ✓ I'll call you when I arrive. — 时间状语从句同样主将从现。

两问判断法

  • 问一:真的可能发生,还是假设?可能发生 → 零条件句或第一条件句;假设 → 第二、第三或混合条件句。
  • 问二:时间是现在、将来还是过去?现在或将来的假设 → 过去式 + would do;过去的假设 → had done + would have done。
  • 问三(混合条件句):条件和结果是不是分属两个时间?是的话,条件和结果各按自己的时间选形式。

wish、as if、would rather、It's time… 也用「时态后退」表示假设,但不属于 if 条件句,可以到虚拟语气练习中专门训练。

继续练习

常见问题

if 从句里真的永远不能用 will 吗?

不是永远不能。表示将来的条件时,if 从句用一般现在时,这是基本规则。但 will 表示意愿或礼貌请求时可以出现在 if 从句中,例如 If you will follow me, I'll show you to your room。考试中的普通条件句按主将从现做即可。

If I was you 和 If I were you 哪个对?

If I were you 是标准形式,考试和正式写作都应该用 were。If I was you 在英美日常口语里也很常见,不会影响理解,但属于非正式用法。为了稳妥,书面表达一律用 were。

混合条件句怎么判断?

看条件和结果是不是在两个不同的时间。过去的条件影响现在的结果,用 If + had done,主句 would do(If I had saved money, I would be rich now)。现在一直存在的情况影响过去的结果,用 If + 过去式,主句 would have done。题目里的 now、yesterday、last year 就是最重要的线索。

英语学习平台

在 PromGee 英语学习平台上练习全部 13 个类别。题目与您的水平相匹配,每道题的答案都有讲解,学习进度会保存到您的账号中。

免费检查我的英语

参考来源

继续阅读:更多英语语法与核心表达精选指南

用免费工具练习本主题: 免费英语动词时态测验 (Verb Tenses Quiz)

测一测你的英语水平: 免费英语水平测试(A1–C2)

正在挑选英语学习应用? AI 英语测验生成器对比